有下类定义:
Class A{ Char*a; Public: A():a(0){} A(char*aa) {//把aa所指字符串拷贝到a所指向的存储空间 A=___________________; Strcpy(a,aa);} ~A(){delete [] a;} };
class A{
char* a;
public:
A():a(0){}
A(char*aa) {//把aa所指字符串拷贝到a所指向的存储空间
cout<<"strlen(aa):"<<strlen(aa)<<endl;
// cout<<"*aa:"<<*aa<<endl;
printf("aa str :%s \n",aa);
a=new char(strlen(aa)+1);
strcpy_s(a,strlen(aa)+1,aa);
}
~A(){delete [] a;}
};
A(char* aa) { a = new char[strlen(aa) + 1]; // 为a分配内存空间,大小为aa所指字符串的长度+1 strcpy(a, aa); // 将aa所指字符串拷贝到a所指向的内存空间 }
上述代码中,new char[strlen(aa) + 1]用于动态分配内存空间,strlen(aa)获取参数aa所指字符串的长度,+1是为了留出末尾的空字符\0的位置。然后使用strcpy(a, aa)将aa所指字符串拷贝到a所指向的内存空间。
需要注意的是,在类A的析构函数中,使用delete [] a来释放a所指的动态分配的内存空间,防止内存泄漏。