我正在尝试详细了解复制构造函数。在这样做的同时,我做了以下示例,
#include<iostream>
class Test
{
private:
int a;
public:
/*
Test(const Test &t) // User defined copy constructor
{
a = t.a;
} */
Test()
{
a = 120;
}
int display()
{
return a ;
}
void set(int var)
{
a = var;
}
};
int main()
{
Test t1;
std::cout << "t1.a " << t1.display() << std::endl;
Test t2 = t1; //Default copy constructor is called
std::cout << "T2.a " << t2.display() << std::endl;
t2.set(99); //Changing the value
std::cout << "t1.a " << t1.display() << std::endl;
std::cout << "T2.a " << t2.display() << std::endl;
return 0;
}
我在网上读到默认复制构造函数执行“浅复制”所以这意味着如果 obj1 = obj2,我在 obj1 或 obj2 中所做的任何更改,即使在分配需要反映在两个对象上,因为它们指向相同的位置。但是在这个例子中,当我改变一个对象的值时,它不会反映在另一个对象中。使用用户定义的复制构造函数时获得相同的结果。
有人可以澄清这个话题,浅拷贝是否正在发生!
谢谢!