复制指向对象的指针的构造函数 我在C++类中有一些新的东西,我需要做一个使用指针指向对象的复制构造函数。 我的班级是这样的: class test { int a; char *b; public: test() { a=0; b="\0"; } test(const test &p) { b=new char(strlen(p.b)+1); b=p.b; a=p.a; cout<<"The copy constructor works"; } void seta(int nr) { a=nr; } void setb(char *s) { b=s; } int geta() { return a; } char *getb() { return b; } };

复制指向对象的指针的构造函数 我在C++类中有一些新的东西,我需要做一个使用指针指向对象的复制构造函数。 我的班级是这样的: class test { int a; char *b; public: test() { a=0; b="\0"; } test(const test &p) { b=new char(strlen(p.b)+1); b=p.b; a=p.a; cout<<"The copy constructor works"; } void seta(int nr) { a=nr; } void setb(char *s) { b=s; } int geta() { return a; } char *getb() { return b; } };,c++,pointers,constructor,copy,C++,Pointers,Constructor,Copy,我需要做的是使用复制构造函数创建另一个指向对象*y的指针,它将具有与x相同的值。如果它们是对象而不是指针,那么复制构造函数就可以工作了。你能告诉我该怎么做吗?谢谢 您可能不应该使用指针 如果您确实想这样做,可以将new与复制构造函数结合使用,从而: test *y = new test(*x); 您还需要修复复制构造函数以复制字符串的内容,而不是指针: strcpy(b, p.b); // not b = p.b; 并修复默认构造函数,使其不指向字符串文字(在现代编译器上无法编译,如果试图

我需要做的是使用复制构造函数创建另一个指向对象*y的指针,它将具有与x相同的值。如果它们是对象而不是指针,那么复制构造函数就可以工作了。你能告诉我该怎么做吗?谢谢

您可能不应该使用指针

如果您确实想这样做,可以将
new
与复制构造函数结合使用,从而:

test *y = new test(*x);
您还需要修复复制构造函数以复制字符串的内容,而不是指针:

strcpy(b, p.b);  // not b = p.b;
并修复默认构造函数,使其不指向字符串文字(在现代编译器上无法编译,如果试图添加析构函数来修复内存泄漏,则会出现严重错误)


如果你是C++新手,你可能会更喜欢使用基本类型,友好的类库类型如 STD::String ,在面对指针和内存分配的疯狂之前,

简单,只需引用引用>代码> x>代码>当你传递给<>代码>测试< /代码>的构造器时。

test* y = new test(*x);

语义迂腐:根据定义,复制构造函数不接受指针。您所说的是更正确的转换构造函数。
test* y = new test(*x);