C++string本质和字符串字面值?

问一下各位大佬:
1.C++string类型的变量学校老师说本质是char类型的数组,然而班上一些大佬否认了这一观点,并且我在测试的时候也发现point(char* a)构造函数无法传入string类型变量。
请问string变量真的本质是char类型数组吗?
2.就point(const char* a)构造函数可以直接传入字符串字面量:point a("safsf")而不能传入:string c="asdfs"  point a(c)问题
想问一下:字符串字面量与字符串的区别?
相关代码:

头文件:

#pragma once
class Move_array
{
    int lenth;
    char* move_array;
public:
    static int get_length(const char* a1);
    static void addarray( char *a,const char* copyto, int L);
    Move_array(const char* ina) ;
    ~Move_array();
    Move_array(  Move_array&p);
    Move_array operator = (Move_array a);

    

};

源文件:

#include "Move_array.h"

//计算字符串长度
 int Move_array::get_length( const char* a1) {
     int num = 0;
     while (a1&&a1 != '\0') {
         num++;
         a1++;
     }
     return num;
}


  void Move_array::addarray( char *a, const char* copyto, int L) {
      for (int i = 0; i < L; i++) {
          a[i] = copyto[i];
      }
 }


  Move_array:: ~Move_array() {
      delete [] move_array;   //[]
  }

  Move_array::Move_array(const char* ina) :lenth(get_length(ina)), move_array(lenth > 0 ? new char[lenth] : nullptr) {
      addarray(move_array, ina, lenth);

  }


  Move_array::Move_array( Move_array&p) {
      lenth = p.lenth;
      if (lenth > 0) {
          move_array = new char[lenth];
          addarray(move_array, p.move_array, lenth);
      }
      else {
          move_array = nullptr;
      }
  }

  Move_array Move_array::operator = (Move_array a) {      //为什么是const 类型+& 名字
      if (this != &a) {
          delete move_array;
          lenth = a.lenth;
          move_array = new char[lenth];
          addarray(move_array, a.move_array, lenth);
      }
      return *this;
  }

mian函数源文件:

#include<iostream>
#include"Move_array.h"
#include<string>
using namespace std;

int main() {
    //char a[] = { 'a','c','\0' };
    ;
    Move_array array_a("sdsf");

}

 

 

 

字符串本质就是字符数组,String那是经过封装过了的类,当然不完全一致了。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html