首页上一页 1 下一页尾页 1 条记录 1/1页
<>中关于运算符重载的问题(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页讲了运算符重载的基本准则,其中提到“一元操作数”和“二元操作数”的概念,请问什么是“一元操作数”和“二元操作数”?能否举例说明。
一、该书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页讲了运算符重载的基本准则,其中提到“一元操作数”和“二元操作数”的概念,请问什么是“一元操作数”和“二元操作数”?能否举例说明。