Complex c = a + b; 相当于 Complex c (a + b) 因此这边不调用重载的=运算符函数,但是我疑惑的点在于 对Complex c的定义为什么没有调用拷贝构造函数Complex::Complex(const Complex &x),我的理解是a+b调用重载的+运算符函数返回的这个Complex对象来定义c不应该还要调用一次拷贝构造函数吗,就像后面的Complex d(c) 一样。我打断点看了一下,发现对c的定义没有调用任何的构造函数就让我非常疑惑
Complex Complex::operator+(const Complex &x) {
return Complex(m_real+x.m_real,m_image+x.m_image);
}
这一段代码返回的对象应该是属于一个右值吗,是不是通过右值来定义对象就可以不用调用构造函数了?,麻烦老师解答一下我的疑惑,晕了–||