C++函数指针,对象指针,this指针,指向类静态怎么用


这篇文章主要介绍了C++函数指针,对象指针,this指针,指向类静态怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++函数指针,对象指针,this指针,指向类静态怎么用文章都会有所收获,下面我们一起来看看吧。函数的代码在内存中的首地址,是由函数名表示的,也就是说函数名等价于函数代码首地址。因此,可以定义一个指向函数的指针,即函数指针。函数指针定义和赋值的语法如下,其中数据类型代表指向函数的返回类型,形参表为指向函数的形参表;赋值时必须保证指向的函数名和函数指针的返回类型和形参完全相同:数据类型 (*函数指针名)(形参表);
函数指针名 = 函数名;下面的例子定义了一个函数和一个函数指针,通过函数指针调用函数代码:顾名思义,对象指针表示指向对象的指针。对象名即对象的地址,所以可以将对象的地址赋值给同类型的指针,从而通过该指针使用此对象。定义与使用对象指针包含4个步骤:定义XXX类型指针;定义XXX类型对象免费云主机域名;将对象地址赋值给指针;使用“(*对象指针名).成员名”或者“对象指针名->成员名”的形式使用对象的成员;下面的例子展示了对象指针的定义与使用:C++中,类的每个对象的数据成员都需要单独分配内存,但是类的所有对象的函数成员共享内存。this指针是对象的非静态成员函数的隐含参数,不需要自己进行定义,this指针指向当前调用非静态成员函数的对象。当类对象调用非静态成员函数时,对象的地址作为this指针的值,进而非静态成员函数通过this指向的地址,来访问对象的数据成员(类的不同对象的数据成员存储在不同的地址,this指针用于传递对象的地址)。this指针访问其指向的对象数据成员的语法为:this->数据成员名下面的例子中,Duck类的成员函数getAge需要访问对象的数据成员duckAge,但是由于函数中已经存在同名的duckAge变量,所以需要通过this来访问数据成员duckAge:首先,类的静态成员和非静态成员是不同的,静态成员属于类,而非静态成员属于对象。指向类的非静态成员的指针,包含指向数据成员的指针和指向函数成员的指针。声明时需要指明指针指向的“类名”和“类型”,类型表示数据成员或函数成员的数据类型:类型 类名::*数据成员指针名;
类型 (类名::*函数成员指针名)(参数表);下面定义的Duck类包含public成员:int类型数据成员duckWeight和int类型函数成员getAge()(指向非静态成员的指针也必须遵守访问权限,不能指向private成员)下面分别声明指向二者的指针:指向非静态成员的数据指针和函数指针赋值语法为:数据成员指针名 = &类名::数据成员名;
函数成员指针名 = &类名::函数成员名;
下面对两个指针进行赋值:上面进行的声明和赋值都是针对类进行的,所以并没有指向对象的成员地址。这里涉及到类的定义过程,类定义时并没有分配内存,而只是确定各个数据成员所占内存大小和相对位置。所以,可以使用对象的起始地址加相对位置对数据成员进行访问。非静态数据成员指针访问成员的语法有如下两种方式:对象名.*数据成员的指针名
对象指针名->*数据成员指针名函数成员并不针对每个对象都有一个副本,而是共享的。对象调用函数成员时需要通过this指针,非静态成员函数指针的调用包含下面两种语法:(对象名.函数成员指针名)(实参表)
(对象指针名->*函数成员指针名 )(实参表)对于类的静态数据成员和函数成员,由于其并不属于具体的对象,所以只需要普通的数据型指针和函数型指针即可。下面定义的Duck类包含用static声明的静态数据成员和静态函数成员:下面是指向类的静态成员的数据型指针和函数型指针的定义和赋值过程:调用指针的时候,只需要遵守基本数据型指针和函数型指针的调用语法即可:关于“C++函数指针,对象指针,this指针,指向类静态怎么用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C++函数指针,对象指针,this指针,指向类静态怎么用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。

相关推荐: C#如何实现抢红包算法

今天小编给大家分享一下C#如何实现抢红包算法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。发出一个固定金额的红包,由若干个人来抢,需要满足哪些规…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/13 19:05
下一篇 01/13 19:05

相关推荐