我创建了一个类库并重载了+运算符
class coor
{
coor(){std::cout<<"default constructor called\n";};
coor operator +(coor param) const;
};
coor coor::operator+(coor param) const
{
....
}
int main() {
coor obj1;
coor obj2;
coor obj3 = obj1 + obj2;
std::cin.get();
return 0;
}
为什么未调用obj3的默认构造函数?
在声明和分配并分开时调用它。
最佳答案
用
coor obj3 = obj1 + obj2
您从
obj3
的结果(这是所谓的r值和一个临时对象)中复制并构造obj1 + obj2
。即使在这里使用
=
,它也不是赋值而是初始化。