<>中关于运算符重载的问题(2011-9-22)
发表在C语言图书答疑 2011-09-23
是否精华
版块置顶:
你好!
一、该书P132页讲了关于重载运算符的相关知识,根据例5.20,我在C++中运行了如下程序:
#include<stdio.h>

class CBook
{
public:
int m_Pages;  //此处如果将int换成float
void OutputPages()
{
printf("%d\n",m_Pages);  //将%d换成%f
}
CBook operator+(const CBook &book)
{
CBook bk;
bk.m_Pages=m_Pages+book.m_Pages;
return bk;
}

}

main()
{
CBook vbBook,vcBook,vfBook;
vbBook.m_Pages=9;
vcBook.m_Pages=20;
vfBook=vbBook+vcBook;
printf("vfBook=%d.\n",vfBook);  //将%d换成%f
vfBook.OutputPages(); 
return vfBook;
}

结果表明该程序是可以通过的,运行结果为vfBook=29,29,但是如果按注释中的要求将数据成员m_Pages的类型改为“float”型后,程序运行的结果是不正确的(vfBook=0.000000,29.000000),这是为什么?看上去这样改并没有逻辑错误啊?

二、P136页讲了运算符重载的基本准则,其中提到“一元操作数”和“二元操作数”的概念,请问什么是“一元操作数”和“二元操作数”?能否举例说明。
分享到:
精彩评论 1
学分: LV1
2011-09-23
沙发
printf("vfBook=%d.\n",vfBook); //将%d换成%f
你改为 printf("vfBook=%d.\n",vfBook.m_Pages); //将%d换成%f


一元操作符和二元操作符应该对应的是单目运算符和双目运算符
这两个概念在本书的前面章节有介绍
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照