apprentices 2015-11-15 07:41 采纳率: 0%
浏览 1278

继承与派生和虚基类函数的

刚学习的c++中的虚基类,然后发现并不懂求大神
#include
using namespace std;
class T0
{
protected:
int x;
public:
T0(int a = 0){ x = a; cout << "爷爷类\n"; }
virtual void show(){ cout << "this is grandpa!\n"; }
~T0(){ cout << "grandpa\n"; }
};
class T1 :virtual public T0
{
protected:
int y;
public:
T1(int a = 0, int b = 0) :T0(a){ y = b; cout << "father class\n"; }
virtual void show(){ cout << "this is father!\n"; }
~T1(){ cout << "father\n"; }
};
class T12 :virtual public T0
{
protected:
int y1;
public:
T12(int a = 0, int b = 0) :T0(a){ y1 = b; cout << "father class\n"; }
virtual void show(){ cout << "this is father!\n"; }
~T12(){ cout << "father\n"; }
};
class T2 :public T1, public T12
{
protected:
int z;
public:
T2(int a = 0, int b = 0, int c = 0) :T0(a), T1(a, b){ z = c; cout << "son class\n"; }
~T2(){ cout << "son\n"; }
virtual void show(){ cout << "this is son!\n"; }
};
int main()
{
T0 t01(3);
T1 t11(4, 3);
T2 t21(1, 2, 3);
t01.show();
t11.show();
t21.show();
T0 *T0p = &t01;
T0p->show();
*T0p = t11;
T0p->show();
*T0p = t21;
T0p->show();
system("pause");
return 0;
}
中最后三个指针指向的函数,加不加virtual没有什么区别,求解!!!

  • 写回答

2条回答 默认 最新

  • Evankaka 博客专家认证 2015-11-15 12:09
    关注

    加virtual表示是虚函数,当父类指针指向子类时能调用子类对应 的方法。
    不加的话,父类调用的就是自己的方法。就没有动态多态这一说了

    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退