双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

虚函数继承过来还是虚函数,具体请看

tangcat123 tangcat123 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <IOSTREAM.H>
//基类
class CBase
{
int x;
public:
CBase(int n) {x=n;}
~CBase(){}
virtual void SetX(int n) {x=n;}
virtual int GetX() {return x;}
};

//派生类
class CDerive : public CBase
{
int x;
public:
CDerive(int n1,int n2):CBase(n1)
{
x=n2;
}
~CDerive() {}
void SetX(int n) {x=n;}
int GetX() {return x;}
};


我想问的是继承的话应该把父类的函数继承过来啊。
那么这里CDerive实际上有两个SetX么,一个自己的一个基类的?
那自己的这个SetX是虚函数么?
虚函数表我好像搞清楚了,忽然又在这迷糊了。。。

难道我应该这样假设,c++会有一种机制自动把和虚函数同名的函数放在虚函数表中?
我放在虚函数表中的应该是CDerive里的SetX是么?
有点迷糊 大神指点
...全文

相关推荐

C++第二讲关键语法

C++第二讲关键语法,相当好的东西,值得参考!

彩云博风

虚函数和虚继承及其在内存中布局

该资源为虚函数和虚继承及其结合的内存布局的测试,文中写明了有详细测试结果。

fantasywm

(转)多重继承下的虚函数表

多态是C++语言中的一项重要的机制,虚函数就是为实现多态而设计的。多态就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”。而虚函数表在这种多态机制中起了核心调度的作用。由于是编译器在后台操作,所以它被蒙上了一层神秘的面纱。 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为VFTable。 在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,VFTable就显得尤为重要了,它就像一个地图一样,指明了实际所应该调用的函数。在C++的标准中提到,编译器必需要保证虚函数表的指针存在于对象实例中最前面的位置。 这意味着我们通过对象实例的地址得到它的VFTable,然后就可以遍历其中函数指针,并调用相应的函数。

smallnang

c++ 虚函数与纯虚函数的区别(深入分析)

本篇文章是对c++中虚函数与纯虚函数的区别进行了详细的分析介绍,需要的朋友参考下

weixin_38610277

C++类的虚函数虚继承所占的空间

char占用一个字节, 但不满足4的倍数时, 会进行数据对齐, 使用4的倍数的字节(byte).   GCC:   GCC中, 无论是虚函数还是虚继承, 都需要将指针存储在虚函数表(virtual function table), 占用4个字节.   继承会继承基类的数据, 和虚函数表, 即继承基类的空间.   代码: /* * test.cpp * *  Created on: 2014.04.20 *      Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <iostream> using namespa

weixin_38623442
评论 14
收藏 已收藏
分享
返回顶部
tangcat123
C++ 语言 65,214 成员 250,514 内容