以及到实现哪里
为什么Buffer & Buffer :: operator = (const Buffer & buf)
第一个&是做什么用的?
Class &operator=(const Class& 别名);
这是赋值运算符重载的标准格式,形参为本类对象的常引用,返回值是本类对象自己的引用可以做左值,只能用类的成员重载--回答源于:Class &operator=(const Class &); 操作符重载什么意思???_百度知道 (baidu.com)
我的理解就是:
Buffer & Buffer :: operator = (const Buffer & buf)
Buffer&表示左值,返回值是作Buffer类的左值
Buffer :: operator =表示Buffer类中的赋值运算符(=)进行重载
(const Buffer & buf)表示传入的值是Buffer类的常引用
左值和右值的关系
int a = 1; // a 是左值
int b = 2; // b 是左值
int c = a + b; // + 需要右值,所以 a 和 b 被转换成右值
// + 返回右值
右值引用:数据类型&& 名称 = 右值;
左值引用:数据类型& 名称 = 左值;
常量的左值和右值引用:const 数据变量 &/&& 名称 = 左值/右值
区分左值和右值:左值可以取地址,可以进行运算,右值是临时变量,取不到地址
int&& a1 = sum(a,b);//sum(a,b)是右值,在函数结束后释放,不存在地址
int& b1 = a1;//a1由上一行被赋值后,有地址是左值
可能理解不到位,请多指教