我创建了一个类库并重载了+运算符

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

即使在这里使用=,它也不是赋值而是初始化。

10-08 05:41