复制指向对象指针的构造函数
Copy constructor for pointers to object
我是 C++ classes 的新手,我需要制作一个使用对象指针的复制构造函数。
我的 class 看起来像这样:
class test
{
int a;
char *b;
public:
test()
{
a=0;
b="[=10=]";
}
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;
}
};
现在我有一个指向对象的指针
test *x;
x=new test;
我需要做的是使用复制构造函数创建另一个指向对象 *y 的指针,它将与 x 具有相同的值。如果它们是对象而不是指针,那么复制构造函数就可以工作。你能告诉我应该怎么做吗?谢谢!
你可能应该做的是不要使用指针。
如果你真的想这样做,你可以将new
与一个复制构造函数结合起来:
test *y = new test(*x);
您还需要修复复制构造函数以复制字符串的内容,而不是指针:
strcpy(b, p.b); // not b = p.b;
并修复默认构造函数,使其不指向字符串文字(这将无法在现代编译器上编译,如果您尝试添加析构函数来修复内存泄漏,将会出现可怕的错误) .
如果您是 C++ 的新手,在面对指针和内存分配的疯狂之前,您可能会使用基本类型和友好的库类型(如 std::string
)获得更多乐趣。
很简单,当您将 x
传递给 test
的构造函数时,只需取消引用 x
。
test* y = new test(*x);
我是 C++ classes 的新手,我需要制作一个使用对象指针的复制构造函数。 我的 class 看起来像这样:
class test
{
int a;
char *b;
public:
test()
{
a=0;
b="[=10=]";
}
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;
}
};
现在我有一个指向对象的指针
test *x;
x=new test;
我需要做的是使用复制构造函数创建另一个指向对象 *y 的指针,它将与 x 具有相同的值。如果它们是对象而不是指针,那么复制构造函数就可以工作。你能告诉我应该怎么做吗?谢谢!
你可能应该做的是不要使用指针。
如果你真的想这样做,你可以将new
与一个复制构造函数结合起来:
test *y = new test(*x);
您还需要修复复制构造函数以复制字符串的内容,而不是指针:
strcpy(b, p.b); // not b = p.b;
并修复默认构造函数,使其不指向字符串文字(这将无法在现代编译器上编译,如果您尝试添加析构函数来修复内存泄漏,将会出现可怕的错误) .
如果您是 C++ 的新手,在面对指针和内存分配的疯狂之前,您可能会使用基本类型和友好的库类型(如 std::string
)获得更多乐趣。
很简单,当您将 x
传递给 test
的构造函数时,只需取消引用 x
。
test* y = new test(*x);