初学C++,有Java背景。
今天学到复制函数这边,突发奇想,如果类A被作为类B的构造函数的参数传递进去,然后又通过初始化列表进行赋值,那么类 A 的复制构造函数会被调用几次?
我猜测可能会有两次,所以做个试验验证一下,但是语法检查无措,在执行时,却一大堆错误。
先上代码
class Clock {
public:
Clock(int h, int m, int s) :hour(h), minute(m), second(s) {}
Clock(Minu m) : minu(m) {}
private:
int hour, minute, second;
Minu minu;
};
class Minu {
public:
Minu(): minute(0) {} // 普通无参构造函数
Minu(const Minu& m) { // 复制构造函数
cout << "调用复制构造函数" << endl;
}
private:
int minute;
};
int main() {
Minu m;
Clock clockA(m);
return 0;
}
代码语法检查没有问题,但是一运行,报错一大堆。