c++赋值操作符,如何将一个对象设置为等于一个新对象的实例
c++ assignment operator, how can you set one object to be equal to an instance of a new object?
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)
调用复制构造函数。一个微妙但重要的区别。
相关文章:
- 当一个新对象被分配到它的地址时,对象是否必须被销毁
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 有没有一种方法可以从函数中返回一个新对象或对现有对象的引用
- 如何异步销毁对象并立即分配一个新对象
- 我可以制作一个对象方法,如果单独调用,它将自行修改,但如果在复制初始化期间调用,则会返回一个新对象?
- 我应该如何在这个房间中创建一个新对象 - opengl
- 如何创建一个C ++函数,该函数在每次用户输入新数据时创建新对象
- C++如何为向量中的每个元素创建一个新对象?
- 从指针参考C 创建一个新对象
- 我如何从数组中创建一个新对象,该数组在C 中保存不同的对象
- 在C++语言中,如何创建一个指向数组的指针的新对象?
- 使用另一个(现有)对象创建新对象时会发生什么情况?
- 从现有指针C 创建一个新对象
- 按值返回不会创建一个新对象
- 如何从NanAsyncWorker返回一个新对象
- 将现有对象传递给构造函数或构造一个新对象
- 每次创建一个新对象或保留一个对象
- 创建一个新对象并传入方法参数
- 如何实现一个创建新对象并返回对它的引用的C++方法
- C等价于新对象(构造函数)