函数已有主体,C++多重继承 父类存在同名函数

2022-02-03 14:49:37 百科大全 投稿:一盘搜百科
摘要问题出在域名查找函数已有主体。 Inherit::IBase2:: 这个含义代表从Inherit类域名找IBase2类域名再找fun1. 尝试把Inherit::去掉吧,没什么用。 这个既不是多态,也

问题出在域名查找函数已有主体。

函数已有主体,C++多重继承 父类存在同名函数插图

Inherit::IBase2::

函数已有主体,C++多重继承 父类存在同名函数插图1

这个含义代表从Inherit类域名找IBase2类域名再找fun1.

尝试把Inherit::去掉吧,没什么用。

这个既不是多态,也不重载,感觉只是把基类的虚函数的实现改到子类中实现了,实现的还是基类的函数。但语法上还是纯虚函数,不能实例化。

而实际上子类并没有生成虚函数,只有一个vptr,而vtable里面没有函数。

class IBase1{public: virtual int func1() = 0;};class IBase2{public: virtual int func1() = 0;};class Inherit: public virtual IBase1 , virtual public IBase2{public: virtual int IBase1::func1(){printf(“IBase1 func1 \n”); return 1;} virtual int IBase2::func1();//{printf(“IBase2 func1 \n”); return 2;}};int Inherit::func1(){ printf(“IBase2 func1 \n”); return 0;}main中 IBase1 *p1 = new Inherit(); //打印 “IBase1 func1” p1->func1(); IBase2 *p2 = new Inherit(); //打印”IBase2 func1″ p2->func1();vc2005是可以编译的过,如何把两个都在类外定义,没有找到方法。

C语言的函数名后有一对圆括号,括号内有函数参数,但参数可有可无.

这是C的语法规定的,函数名的后面一定要带括号。但括号里面不一定带有参数。这要根据你的函数是否需要参数接口而定,像main()这个入口函数它就不需要用户传递任何参数给它,所以就没有提供参数接口(其实main是有带有参数接口的,用来存放命令行的参数,原型请自己在网上找)。而average函数是一个求平均数的函数,试问一下,如果你告诉系统你要对那些数求平均数,你说系统有这么神奇知道想求哪些数的平均数吗?明显是不可能的,那么要怎么让系统知道你想求的数呢,那就要靠参数传递来实现。

声明:一盘搜百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系 88888@qq.com