湖南金辉建设集团有限公司网站,注册域名平台,用cms做网站的具体步骤,wordpress 批量换文章目录 右值引用定义:code:移动赋值定义:code (包含自实现类中的6大默认):类对象的移动构造类成员对象的移动构造右值引用
左值:赋值号左边,可以取地址 变量名返回左值引用的函数调用前置自增,前置自减:++i;–i;赋值运算…右值:赋值号右边,不可以取地址;将亡值,… 文章目录 右值引用定义:code: 移动赋值定义:code (包含自实现类中的6大默认):类对象的移动构造类成员对象的移动构造 右值引用
左值:赋值号左边,可以取地址
变量名返回左值引用的函数调用前置自增,前置自减:++i;–i;赋值运算…右值:赋值号右边,不可以取地址;将亡值,通常是将要被移动的对象
常量返回非引动类型的函数调用后置自增:i ++算术表达式 (a+b)逻辑表达式(a b)…std::move() 移动的值被右值引用的值…定义:
如,将func() 返回类对象赋值给类A的对象a A a = func(); 功能:调高使用临时对象的效率
code:
分析: 发生1次构造,1次拷贝构造: 第一次构造为getObjectA()中A()的构造 1次拷贝构造为将A() 赋值给临时对象, 临时对象申请的空间赋值给对象a 没有发生拷贝行为,提高了效率
class A
{public:A(){cout"A() "thisendl;}~A(){cout"~A() "thisendl;}A(const A another){cout"A(const A)"another"-"thisendl;}
};
A getObjectA()
{return A();
}
int main()
{A a = getObjectA(); return 0;
}
运行结果:
A()
A(const A)
~A()
~A() 移动赋值
语义:对象赋值时,避免内存空间的重新分配
定义:
如, 将类A 对象a 移动赋值给 对象b A b(std::move(a));
功能:提高将类对象返回值赋值给临时对象的效率
code (包含自实现类中的6大默认):
类对象的移动构造
分析: 一次构造,一次移动构造 一次构造为 a对象的构造 移动构造为 将 a 赋值给b, a所申请的空间没有进行拷贝,提高了效率