>>> 背景
我们知道对于一些c++内建类型来说,ostream类的操作符<<都提供了输出到标准输出流的方法,只需要像下面这样就能输出到终端窗口了。
int num = 1;string str = number;cout < < str < < is < < num;但是对于自建类的话,就需要其他的手段输出想要的内容了。通过重载<<操作符并声明为ostream类的友元是常见的方法。下面就是一种常见的书写范式。
class persion{private: string name; int age;public: persion() = delete; persion(string a_name, int a_age) : name(a_name), age(a_age) {} friend ostream& operator< <(ostream& os, persion& per) { os < < (lvalue)a persion object with name: < < per.name < < , age: < >> 问题
我在使用下面这串代码对重载的效果进行测试的时候,编译器报出了问题,它告诉把右值赋给了要求左值引用的参数。
cout < < persion(maxwell, 18) < >> 解决方案
c++11之后,使用&来声明左值引用,使用&&来声明右值引用。在上述测试语句中,persion( maxwell , 18 )是一个临时变量,属于右值。因此,如果想要上述测试语句通过,还需要对类补充一个右值引用的成员函数。如下所示。
class persion{ // ... friend ostream& operator< <(ostream& os, persion&& per) { os < < (rvalue)a persion object with name: < < per.name < < , age: < < per.age; return os; }};
线激光锂电池侧缝焊接质量检测要求
SK海力士CEO:AI芯片助推市值三年内翻番
雷电火灾的危险性_防雷击措施有哪些
电池制造商SK On计划2026年量产磷酸铁锂电池
普通程序员与大神程序员的区别在哪
关于右值引用的一点理解
如何使用MediaPipe Pose构建一个俯卧撑计数器
瓦尔塔计划将其创新技术转移到更大尺寸的锂离子电池上
联想Z5ProGT855版明天开启预约 售价2698元起
中国品牌日 立体通以科技实力现创新品牌魅力
digilentBNC示波器探针(一组,x1x10)简介
加州要求所有自动驾驶汽车在2025年前实现零排放
广汽称石墨烯电池9月量产 8分钟充80% 续航1000km!
TI LMZM2360x降压电源模块在贸泽开售小尺寸更适合空间受限的工业应用
机器人在智能制造领域中有着怎样的应用
智能魔镜显示屏的应用,让你的家庭成为科技空间
嵌入式银行网络安全终端系统的设计
色环电阻主要参数_色环电阻各个颜色代表含义
LG开发出透明天线,或将引领汽车行业新趋势
运算放大器衰减电路图