我有一个如下所示的类,我想为它编写一个复制构造函数。 我需要为此创建一个深拷贝构造函数。以下代码正确打印 x 和 c,但此处 y 的值是垃圾。
#include "stdafx.h"
#include <string.h>
class MyClass
{
public:
MyClass(int a) : y(a) {
}
MyClass(const MyClass &myClass) : y(myClass.y)
{
x = myClass.x;
c = new char[10];
strcpy(c, myClass.c);
}
int x;
char *c;
int &y;
};
int _tmain(int argc, _TCHAR* argv[])
{
MyClass m1(0);
m1.c = new char[10];
strcpy(m1.c, "gourav");
m1.x = 10;
m1.y = m1.x;
MyClass m2 = m1;
printf("x=%d\nc=%s\ny=%d\n", m2.x, m2.c, m2.y);
return 0;
}
最佳答案
在您的代码中,y 是引用。您正在创建 MyClass m1(0),因此 m1.y 指向一个临时 变量 - 0。您只需不得这样做..我不知道为什么你的y成员是引用.. ??无论如何,如果你希望它是那样的,那么就这样做:
//..
int a = 10;
MyClass m1(a);
//..
无论如何,这很丑陋..而且很危险,如果您不知道自己实际上在做什么..您真的应该有一个很好的理由这样做。
此外,重新设计您的类(class)及其成员的姓名..
所以,问题根本不在复制构造函数中..
关于c++ - 使用引用变量复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969621/