- 1.类的成员函数
- 2.this指针
- 3.类成员函数指针
- 3.1.常规成员函数转换
- 3.2.虚函数情形
- 3.3.成员函数指针数组及其应用
- 3.4.成员函数调用和 this 指针
- 4.成员函数和成员虚函数汇编分析
- 5.作者答疑
类实例化为对象,数据成员是根据对象的首地址来偏移的,而对象的成员函数在内存中是公用的,但在C++或者C写代码时,却可以根据对象加操作符.或者->来进行访问,这在底层到底是如何实现的呢? 不同类的相同函数名的函数在内存中有不同的实现。C++中的函数在编译时会根据命名空间、类、参数签名等信息进行重新命名,形成新的函数名。
2.this指针this指针具有如下特点:
名称属性:标识符this表示。 类型属性:classname* const 值属性:表示当前调用该函数对象的首地址。 作用域:this指针是编译器默认传给类中非静态函数的隐含形参,其作用域在非静态成员函数的函数体内。 链接属性:在类作用域中,不同类的非静态成员函数中,this指针变量的链接属性是内部的,但其所指对象是外部的,即this变量是不同的实体,但指向对象是同一个。 存储类型:this指针是由编译器生成,当类的非静态成员函数的参数个数一定时,this指针存储在ECX寄存器中;若该函数参数个数未定(可变参数函数),则存放在栈中。 this指针并不是对象的一部分,this指针所占的内存大小是不会反映在sizeof操作符上的。this指针的类型取决于使用this指针的成员函数类型以及对象类型。
类的成员函数默认第一个参数为T* const register this。
3.类成员函数指针C++编译器在代码编译阶段会对类对象调用的成员函数进行静态绑定(虚函数进行动态绑定),类成员函数的地址在代码编译时就确定,类成员函数地址可以使用成员函数指针进行保存。 成员函数指针定义语法如下:
ReturnType (ClassName::* pointerName) (ArgumentLList);
ReturnType:成员函数返回类型 ClassName: 成员函数所属类的名称 Argument_List: 成员函数参数列表 pointerName:指针名称
class Test
{
public:
void print()
{
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?