c++赋值操作符,如何将一个对象设置为等于一个新对象的实例

c++ assignment operator, how can you set one object to be equal to an instance of a new object?

本文关键字:新对象 于一个 对象 实例 赋值操作符 设置 一个对象 c++      更新时间:2023-10-16
struct Object{
    size_t num;
    Object(size_t s){
        num = s;
    }
    Object(string str){
        num = 1;
    }
    Object& operator = (const Object& b){
        cout << "assignemnt constructor called" << endl;
        return *this;
    }
};

int main ()
{
    Object b2{ 5 };
    Object b3("str");
    b2 = b3;
    b3 = Object(2);   //<-------------how can you set b3 to be Object(2)?
}

我试图将一个对象设置为等于一个新对象。但是这个例子中b3不变。有谁能帮我理解一下我怎样才能把b3变成一个新对象(2)吗?由于

你的赋值运算符实际上没有做任何赋值。您可能需要这样做:

Object& operator = (const Object& b){
    cout << "assignemnt constructor called" << endl;
    num = b.num;
    return *this;
}

同样,文本"赋值构造函数被调用"是不正确的。这是赋值操作符,而不是复制构造函数。当你这样做的时候:

b3 = Object(2);

调用赋值操作符。相反,当您这样做时:

Object b3 = Object(2)

调用复制构造函数。一个微妙但重要的区别。