C++ 该错

来源:百度知道 编辑:UC知道 时间:2024/05/29 00:41:59
有如下定义:
class A
{ char a[10];
public:
A(char* va):a(va)
{
}
};
谁能告诉我上述定义错在哪里?

class A{
char* a;
public:
A(char* va):a(va){}
void show( ){cout << a;}
};

直接char* a,然后传入参数的时候这样写 A b("howdy");你可以b.show( )测试下。
因为你将一个字符串字面指赋给一个指向char的指针a的时候,传递的其实是这个字符串字面值的首地址。

你的那种写法不能编译通过的原因是不能将一个数组赋给一个指针,数组和数组之间也不能赋值。将一个数组作为参数传递给函数的时候其实就是传递了该数组的首个元素的地址。

char *不能赋值给char []吧

字符串赋值应该用strcpy