快速的问题。如果我有一个数组,并已妥善重载赋值运算符,然后当我做这样的事情:C++复制构造函数调用
A = B
当A和B是数组类型的两个对象,我会调用拷贝构造函数,或者仅仅是超载赋值运算符(=)?
我知道,一个拷贝构造函数被调用时
- 按值传递
- 回报当一个对象被声明并给出了相同类型的另一个对象初始化类类型
- 值括号内。
3以上让我感到困惑,并认为A = B也在调用复制构造函数。
它只是调用重载的赋值运算符吗?
谢谢!如果执行A=B;
class userDefinedArray
{
int size ;
int* ptr;
public:
userDefinedArray(int size) : size(size)
, ptr(new int[size])
{}
// The Big Three = 1. Copy Constructor 2. Assignment Operator 3. Destructor
};
如果上述类的定义,然后赋值运算符应该叫
如果有疑问,请在复制构造函数和赋值运算符中添加一些跟踪并运行代码。你很快会看到发生了什么。 – 2011-03-18 03:23:07
是的,我一直在读我的教科书近14个小时。我明白了这一点,但我现在已经过去了,我很累,开始迷惑自己。我要去睡觉了哈哈..谢谢大家! – Ben 2011-03-18 04:11:56