提问人:Fabio 提问时间:7/9/2022 最后编辑:Yakk - Adam NevraumontFabio 更新时间:7/14/2022 访问量:85
默认复制构造函数和赋值运算符
Default copy constructor and assignment operator
问:
如果在我的类的元素中我还有一个常量数据成员,那么复制构造函数和赋值运算符的行为如何? 我认为,但我不确定,提供了复制构造函数(在大多数情况下),而没有提供赋值运算符(与正常情况不同),所以如果我想使用它,我必须实现它(当然不分配常量数据成员)
答:
3赞
Yakk - Adam Nevraumont
7/14/2022
#1
struct foo {
int const x;
};
foo f0{3}; // legal
foo f1 = f0; // legal, copy-construction
foo make_foo(int y) { return {y}; } // legal, direct-initialization
foo f2 = make_foo(3); // legal, elision and/or move-construction
f2 = f1; // illegal, copy-assignment
f2 = make_foo(3); // illegal, move-assignment
施工和分配是不同的操作。 并不意味着总是分配。=
您可以构造子对象;您不能分配给他们。然后,此属性应用于对象本身自动编写的特殊成员函数。const
评论