您好、欢迎来到现金彩票网!
当前位置:热购彩票app下载 > 公有成员 >

C++调用类成员函数的过程

发布时间:2019-07-29 13:10 来源:未知 编辑:admin

  我知道C++有一个虚函数列表,对象有指向虚函数列表的指针,对于有虚函数的类对象调用虚函数时通过虚函数列表里面的指针实现的。。但是对于普通的非虚函数是怎么实现调用的呢、?是怎么...

  我知道C++有一个虚函数列表,对象有指向虚函数列表的指针,对于有虚函数的类对象调用虚函数时通过虚函数列表里面的指针实现的。。但是对于普通的非虚函数是怎么实现调用的呢、? 是怎么找到非虚函数的入口地址? 好像类对象里面只有类的一些数据成员。。求解惑 求详细的内存层次的变化

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部程序运行时内存中有一个区域【代码区】,所有代码段都存放在这里,包括虚函数和非虚函数

  类的虚表可以看成是类的静态数据成员,类的每个对象有个指针指向这个虚表,即为虚表指针

  当虚函数调用时,就是从虚表指针找到虚表,进而找到了虚函数的地址更多追问追答追问比如:class A{ public:void f(){} };

  我知道编译时类中函数会在代码区生成,还有一个偏移量来定位什么的(这不是很懂), 但是a.f是怎么知道代码区f()函数的绝对地址的? 就是想知道运行a.f()时,内存里面发生了什么变化。追答classA

  由此可见,f函数直接寻址(在编译时就已经确定地址了01F1433h),而g函数通过虚指针寻址

  展开全部在static成员函数中传递类本身的指针,就可以在内部调用这个指针的具体动作(做一下强制转换)。

  这解决了不能通过C的函数指针直接调用C++的类普通public成员函数的问题。

http://e-ndicus.com/gongyouchengyuan/1019.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有