问一下各位大佬:
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");
}