200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > C++ Primer 5th笔记(chap 13 拷贝控制)合成的移动操作

C++ Primer 5th笔记(chap 13 拷贝控制)合成的移动操作

时间:2024-01-02 22:46:02

相关推荐

C++ Primer 5th笔记(chap 13 拷贝控制)合成的移动操作

1. 出现条件

只有当一个类没有定义任何自己版本的拷贝控制成员,且类的每个非 static 数据成员都可以移动,编译器才会为它合成构造函数或移动赋值运算符。

struc X{int i;std::string s;};struc HasX{X mem;};X x, x2 = std::move(x);HasX hx, hx2 = std::move(hx);

2. 说明

如果类的一个成员是类类型,且该类有对应的移动操作,编译器也能移动这个成员。

3.不出现的条件

如果一个类只有拷贝构造函数,而没有移动构造函数,在这种情况下,编译器不会合成移动构造函数,函数的匹配规则会保证该类型的对象会被拷贝。

class Foo{public:Foo() = default;Foo(const Foo &) ;//拷贝构造函数//其他成员的定义,但Foo为定义移动构造函数};Foo x;Foo y(x);//拷贝构造函数x是一个左值Foo z(std::move(x));//拷贝构造函数,因为未定义移动构造函数

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。