2个有点难度的问题:(1)抽象基类有VTABLE吗?(2)...

TrueZq 2003-03-19 01:47:26
(1)
任何包含一个或多个纯虚函数的基类称做抽象基类

抽象基类有VTABLE(Virtual Table 虚拟表)吗?
请说明理由或举例证明之(60分)

(2)
class A {
virtual void f();
};

void main()
{
cout<<"size="<<sizeof(A)<<endl;//输出4
}

class A {
virtual void f()=0;
};

void main()
{
cout<<"size="<<sizeof(A)<<endl;//输出也是4
}
是否证明抽象基类也有个VPTR呢?如果有VPTR,它既然不能被初始化(因为不能定义抽象基类对象),又有什么用?(40分)
...全文
208 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leasun 2003-03-19
  • 打赏
  • 举报
回复
编译器会为之生成一个vtable
JoshuaLi 2003-03-19
  • 打赏
  • 举报
回复
学习
yndfcd 2003-03-19
  • 打赏
  • 举报
回复
有没有VTable指针我不知道,但我知道一点。一个空类的大小不为0。这不能说明它有一个Vtable的指针.
在上面的例子中如果定义
class D: public A
{
int member1;
void f(){}
}
则sizeof(D)仍为4.
merlinran 2003-03-19
  • 打赏
  • 举报
回复
致楼主:
ABC有没有vptr对你来说真的很重要吗?

记住:语言是工具。
学C++之初就学这些是没有用的。

到后来自然就会明白有与没有了。可以说有,也可以说没有。
TrueZq 2003-03-19
  • 打赏
  • 举报
回复
问题一:
抽象类在包含有“非抽象的虚函数”时确实有VTABLE。
抽象类如果包含的全都是纯虚函数,也应该有VTABLE吧(我猜的),不知对否

问题二:
我想 抽象类是应该有VPTR的
只是没有看到任何书籍提到,也无法证明

还有谁能讲透彻点?
shornmao 2003-03-19
  • 打赏
  • 举报
回复
VTABLE是实现定义的,C++标准未制定。
北极猩猩 2003-03-19
  • 打赏
  • 举报
回复
抽象类是该有VPTR的
因为,C++中的抽象类中不一定只含有抽象函数也可以由非抽象的虚函数,这些函数当然需要使用VPTR
内容概要:本文系统梳理了多个科研领域的前沿研究与技术实现,重点涵盖FDTD方法中的完美匹配层(PML)研究,以及Matlab/Simulink在电磁、电力、控制、通信、信号处理、图像处理、路径规划、能源系统优化等领域的仿真与算法实现。文中列举了大量基于Matlab和Python的科研案例,如风电功率预测、负荷预测、无人机三维路径规划、电池系统故障诊断、雷达模拟、通信编码、微电网优化调度等,并强调结合智能优化算法(如粒子群、遗传算法、深度学习等)提升系统性能。同时,提供了丰富的代码资源与仿真模型,涵盖永磁同步电机控制、逆变器设计、多智能体任务分配、虚拟电厂调度等复杂系统,助力科研人员快速开展复现实验与创新研究。; 适合人群:具备一定编程基础,熟悉Matlab/Python工具,从事电气工程、自动化、通信、人工智能、新能源、控制科学等相关领域研究的研发人员及研究生。; 使用场景及目标:① 学习并实现FDTD仿真中的PML边界条件以有效抑制数值反射;② 掌握Matlab/Simulink在多物理场建模、控制系统设计与优化算法中的综合应用;③ 借助提供的代码资源完成科研复现、课程设计、竞赛项目或工程原型开发; 阅读建议:此资源以科研实战为导向,不仅提供理论方法,更强调代码实现与仿真验证。建议读者结合自身研究方向,按目录顺序查阅相关模块,下载配套代码进行调试与二次开发,以达到学以致用、融会贯通的目的。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧