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