class MyClass
{
public:
MyClass(int i = 0)
{
cout << i;
}
MyClass(const MyClass &x)
{
cout << 2;
}
MyClass &operator=(const MyClass &x)
{
cout << 3;
return *this;
}
~MyClass()
{
cout << 4;
}
};
int DiffOfCopyAndEqualTest()
{
MyClass obj1(1), obj2(2);
MyClass obj3 = obj1;//obj3还不存在,所以调用拷贝构造函数输出2,
// 如果obj3存在,obj3=obj,则调用复制运算符重载函数,输出3
obj3 = obj2;
return 0;
}
本文深入探讨了C++中拷贝构造函数与赋值操作的区别,通过具体代码实例,详细解释了当对象被初始化和赋值时,这两种机制如何工作。理解这些概念对于避免内存泄漏和确保对象正确复制至关重要。
1万+

被折叠的 条评论
为什么被折叠?



