【C++】引用可以指向临时无名对象吗?

本文探讨了C++中引用不能指向临时无名对象的原因,解析了二级考试中的一道题目,指出加法运算符重载时不能使用引用参数接收由整型隐式转换的临时对象。并提供了代码示例验证编译器对此的错误提示。
摘要由CSDN通过智能技术生成

先来看一道C++二级真题

有如下类定义:
class MyClass{
 public:
MyClass(int d=0): val(d) { }
 ____________ //运算符函数+的声明
private:
 int val;
};
若要使语句序列
MyClass x(2), y(4), z;
z=7+y;
y=x+3;
能够正常运行,横线处的声明语句应为()。
A) friend MyClass operator+(MyClass, MyClass);
B) friend MyClass operator+(MyClass&, MyClass&);
C) friend MyClass operator+(MyClass, MyClass&);
D) friend MyClass operator+(MyClass&, MyClass);

【解析】程序中MyClass类给出一个默认构造函数,形参d提整数类型,默认值为0,在成员初始化列表中使用形参d初始化val成员;语句序列中两个表达式:7+y和x+3说明加法运算符函数的两个操作数可以是整型,也可以是MyClass类型,如果是整型的话,需要使用默认构造函数将整数类型隐式转换成临时的MyClass类对象,此时赋给运算符函数时,就不可以使用引用类型了,所以选项B、C、D都是错误的,选项A是正确的。

【个人解析】
  为什么将整型隐式转

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值