父类非虚函数,子类继承变成虚函数,会发生什么
代码:
```c++
#include<iostream>
using namespace std;
class A
{
public:
void foo()
{
printf("A类中:实foo()\n");
}
virtual void fun()
{
printf("A类中:虚fun()\n");
}
};
class B : public A
{
public:
virtual void foo()
{
printf("B类中:虚foo()\n");
}
void fun()
{
printf("B类中:实fun()\n");
}
};
class C : public B
{
public:
void foo()
{
printf("C类中:实foo()\n");
}
void fun()
{
printf("C类中:实fun()\n");
}
};
int main(void)
{
A a;
B b;
C oc;
A *ap = &a;
ap->foo(); //父实子虚
ap->fun(); //父虚子实
cout<<endl;
ap = &b;
ap->foo();
ap->fun();
cout<<endl;
cout<<"???"<<endl;
B *ptr = (B *)&a;
ptr->foo(); //为什么是c
ptr->fun(); //为什么是c
cout<<endl;
B *bp = &b;
bp->foo();
bp->fun();
cout<<endl;
bp = &oc;
bp->foo();
bp->fun(); //为什么不是B中
cout<<endl;
return 0;
}
```
运行结果:

相关推荐
Python子类继承父类构造函数详解
在本文里我们给大家分享一篇关于Python 子类继承父类构造函数的相关知识点内容,需要的朋友们跟着学习下。
C++类继承之子类调用父类的构造函数的实例详解
主要介绍了C++类继承之子类调用父类的构造函数的实例详解的相关资料,希望通过本文大家能够掌握C++类继承的相关知识,需要的朋友可以参考下
c++中子类对象不能调用父类中的虚函数
c++里,指针和引用是很重要的概念,这个程序不仅对指针和引用做了说明、使用,而且对子类不能继承父类虚函数也做了说明。
深入探讨C++父类子类中虚函数的应用
构造函数不能是虚函数,因为在调用构造函数创建对象时,构造函数必须是确定的,所以构造函数不能是虚函数。析构函数可以是虚函数。1.父类Father.h: 代码如下:#pragma onceclass Father{public: Father(void); virtual ~Father(void); virtual int getCount();public: int count;};Father.cpp 代码如下:#include “StdAfx.h”#include “Father.h”#include using namespace std;Father::Father
【Python】使用super()函数进行类的继承,将父类的方法和属性继承在子类的里。
学习对象:@丁七岁 https://blog.csdn.net/qq_43612538/article/details/105914720 1.创建School类,声明3个主属性 2.创建学生类Student,继承自School类的3个属性, 添加额外两个属性:班级class、学号s_no。 打印学生的所有信息print_info方法。 3.创建教师类Teacher,继承自School类, 添加额外两个属性:部门department、工号c_no。 添加方法:打印教师的所有信息print_info方法。 4.定义学生类、教师类的对象,然后分别调用print_info方法 实现各


community_281
