社区
C++ 语言
帖子详情
类中虚函数对应的表指针在类里是成员还是类符带的空间呢?
迷途的书童
2008-11-01 05:25:48
类中对应于虚函数,是在类中有一个表指针指向虚函数的地址:
想问一下这个指针是类的成员吗?还是类里面的某个东西?
不是很清楚,希望各位大大回答一下,谢谢!
...全文
159
8
打赏
收藏
类中虚函数对应的表指针在类里是成员还是类符带的空间呢?
类中对应于虚函数,是在类中有一个表指针指向虚函数的地址: 想问一下这个指针是类的成员吗?还是类里面的某个东西? 不是很清楚,希望各位大大回答一下,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
迷途的书童
2008-11-03
打赏
举报
回复
谢谢!
lann64
2008-11-02
打赏
举报
回复
1
[Quote=引用 6 楼 GUANYIJUN123 的回复:]
是阿,就是这里有点想不通!
[/Quote]
这种技术在各类程序里是常用的技术了,怎么想不通了?
先看看别的东西,1、基类里的private成员,在派生类里是不是也存在呢?显然是的,但是派生类不能直接访问它。
2、操作系统内部使用的一些变量和函数,在你使用的系统下,是不是也存在呢?显然使得,但是作为用户你不能直接访问它们。
好了,回来看虚函数表指针。显然,这个指针是跟对象在一起保存的,说是对象的一部分也没错,在对象内存布局里也实实在在占据了空间。但是这个东西是专门跟系统运行时使用的,不希望用户来直接访问。因此对用户进行了隐藏处理。如果是数据成员,无论是哪种标签属性(即使是private),用户总是可以访问到,所以它不能是数据成员。可以理解成系统在对象上附上了一个“补丁”,里面带着系统运行时需要的信息,这个“补丁”是实实在在存在的,但用户不能直接访问它,从用户角度看,这个是透明不可见的东西,当然也就不是类里的成分了。
至于采取特殊手段来访问这个东西,是要付出成本的。这个是编译器相关的,采用了手段,不仅不能保证移植性,而且,编译器版本升级后也不保证手段还有效。
类似的东西,系统里还有很多,有兴趣看看new实现。
迷途的书童
2008-11-02
打赏
举报
回复
是阿,就是这里有点想不通!
beiyang9
2008-11-01
打赏
举报
回复
为什么不属于数据成员呢,既然占有对象内存,那就该是对象一部分呀?只是我的理解。
weiyijiji
2008-11-01
打赏
举报
回复
你可以理解为成员指针变量,因为它是存在于类对象的内存布局中.但是跟普通成员不同,它没有访问权限,可以间接找到它来调用函数
baihacker
2008-11-01
打赏
举报
回复
都不属于.
仅仅是编译器为实现某些功能,加的东西.
就像引用一样,一般说来会用一个指针来实现.
迷途的书童
2008-11-01
打赏
举报
回复
这个我理解,我只是想知道这个指针在类里究竟是什么身份!
属于成员指针变量啊?或类的成员函数啊?或是什么,有没有相关的说法呢?
谢谢!
baihacker
2008-11-01
打赏
举报
回复
编译器按插的一个指针,你不可以主动访问.
但是可以通过一些手段修改.
C++-----
虚函数
、
虚函数
指针
、
虚函数
表
、通过
指针
访问
类
的
虚函数
成员
本文介绍了C++中的
虚函数
继承,当派生
类
对象赋值给基
类
指针
时,基
类
指针
能够调用派生
类
的
虚函数
。同时,探讨了
虚函数
表
、
虚函数
指针
的概念,以及如何通过
指针
访问
类
的
虚函数
成员
。
用
类
的空
指针
调用非虚
成员
函数和
虚函数
本文探讨了C++中空
指针
调用非虚
成员
函数和
虚函数
的行为。当空
指针
调用非
虚函数
时,如果函数未使用`this`
指针
则不会报错,但访问数据
成员
会导致运行时错误。对于
虚函数
,由于涉及动态联编,空
指针
无法调用。文章详细解释了静态联编、动态联编、`this`
指针
的概念,并解析了调用过程。
C++---空
指针
能调用
类
成员
函数吗?
博客探讨空
指针
能否调用
类
成员
函数和
虚函数
。指出空
指针
可调用
成员
函数,但调用
虚函数
会出错,编译时两者都能通过。解释了空
指针
能调用
成员
函数是因
成员
函数地址编译时确定,若函数体不用this
指针
则没问题;不能调用
虚函数
是因找不到虚
表
地址。
C++
类
sizeof 计算大小
虚函数
虚继承 虚基
类
虚函数
表
本文详细介绍了C++
类
的大小计算,涉及
虚函数
、虚继承等因素的影响。
类
的大小与
虚函数
表
、虚基
类
指针
相关,空
类
大小为1,
虚函数
会增加一个
指针
大小,虚继承会增加虚基
类
指针
。通过实例分析了不同继承和覆盖情况下的
类
大小变化。
C++中
虚函数
、虚
指针
和虚
表
详解
本文详细介绍了C++中的
虚函数
和多态性原理。每个包含
虚函数
的
类
都有一个虚
表
,其中存储了
虚函数
的地址。对象包含一个指向虚
表
的
指针
,确保在运行时能调用正确的函数。在构造函数中初始化虚
表
指针
,实现动态绑定。
虚函数
调用时,对象的虚
表
指针
决定了调用哪个函数,从而实现多态。纯
虚函数
和抽象
类
的概念也在此文中提及。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章