符号重载函数能作为基类的虚函数么? 5

 我来答
黄邦勇帅哥哥
2011-12-26 · TA获得超过3987个赞
知道大有可为答主
回答量:1199
采纳率:100%
帮助的人:487万
展开全部
可以的,操作符重载函数就是一个普通函数,他和普通函数米啥区别,唯一的区别就在于他的函数名有点与众不同,还有就是不是所有的操作符都能重载,举个示例吧
class A{public : void virtual operator +(int a){cout<<"A"<<endl;}; };

class B:public A{ public: void operator +(int a){cout<<"B"<<endl;}; };

void main()
{
A ma;
B mb;
A *p=&ma;
p->operator +(2); //调用的是基类的操作符函数operator +输出A
p=&mb;
p->operator +(3); //调用的是子类的操作符函数operator +输出B,在这里我们可以看到重载的操作符函数同样具有虚函数的多态性

system("pause");
}
更多追问追答
追问
那比如说我要重载">>"这个,基类和派生类中怎么写啊?
追答
随便写啊,你可以是任何反回类型,任何的形参,代码可以任意,你可以把我这个程序中的+改成>>程序一样不会有错,要重载>>要看你程序的类调用这个运算符到底要他做什么。只是再调用时要注意形参要正确就行,可以像我这样显示调用,也可以不需要显示调用,比如上例的ma+mb这样的语句会被自动转换为ma.operator +(mb)这样来执行,这时因为上面的程序中重载的+没有为其定义mb类型的形参,所以就会出现参数调用不皮配的错,如果重载的是>>则ma>>a时会自动转换为ma.operator >>(a); 因此,在重载>>的形参时就要定义与a相同类型的形参,不然会错。
wanfustudio
2011-12-26 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3762万
展开全部
这个理论上是可以说通的
虚函数只是为了建立虚函数表,来实现多态
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
li657418652
2011-12-26
知道答主
回答量:3
采纳率:0%
帮助的人:4961
展开全部
可以,虚函数能形成多态,子类可以继承
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lency_cn
2011-12-26 · TA获得超过287个赞
知道答主
回答量:229
采纳率:100%
帮助的人:170万
展开全部
可以啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式