回 帖 发 新 帖 刷新版面

主题:一道习题,请高手指教!

小弟要参加二级考试了,有一些习题不能理解,望高手能指教一下.


已知类Myst中有一个只需要一个double型参数的构造函数,且将运算符"-"重载为友元函数.要使下列语句序列
Mylist x(3.2),y(5.5),z(0.0);
z=8.9-y;
y=x-6.3;
能够正常运行,运算符函数operator-应在类中说明为()
A friend Myst operator-(Myst,Myst&);     B friend Myst operator-(Myst,Myst);
C friend Myst operator-(Myst&,Myst&);     D friend Myst operator-(Myst&,Myst);
答案选的是B,但我实在想不通.
我感觉好像每个答案都是错的.


回复列表 (共2个回复)

沙发

因为有构造函数Myst(double);而z=8.9-y;中8.9正好和Myst()中的参数匹配,于是调用了Myst(8.9)产生了一个临时对象,这个临时对象是没有固定地址的,所以不能用引用。答案当然是B。
其实8.9可以说是一个Myst类型的对象,也可以说是一个double类型的对象,同样可以说是float类型
的对象。预定义的double类型同样也有构造函数double(),里面的参数估计也和8.9匹配吧。这是我个人认为,仅供参考。

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册