使用字符数组存储字符串,在参数传递的时候传递char * 指针。然后需要使用strcpy_s函数,复制字符数组到自己的成员变量中。然后再返回时,直接返回这个字符数组就好了,也是一个指针。
注意不要使用strcpy拷贝字符串数组,因为这个函数在拷贝的时候不会检查边界,非常容易造成栈溢出,越界访问。使用更安全的strcpy_s, 用法是 strcpy_s(a, len, b);把b赋值到a中,len是b的长度。这里注意是使用strlen而不是sizeof()来计算字符数组的长度。因为sizeof计算的是字符指针的长度。strlen头文件是<string.h>
另一个思路就是使用string替换char[]
class A
{
public:
A(const char* s){
strcpy_s(cha, strlen(s)+1, s);
cout << "A()" << endl;
}
char* getcha1() {
return cha;
}
private:
char cha[10];
};
A a = A("hahaha");
cout << a.getcha1() << endl;
值得注意的是,sizeof其实可以检测出数组类型的空间长度。对上面的程序,sizeof(cha)==10.
所以对于数组可以这样计算 n = sizeof(array) / sizeof(array[0])
对于指针类型,sizeof就是给出当前指针占用空间的大小。