对象指针

来源:互联网 发布:电脑手机拨号软件 编辑:程序博客网 时间:2024/04/30 18:05
转自:blog.csdn.net/minpro

对象指针
1、对象指针的一般概念
对象指针遵循一般变量指针的各种规则:类名 *对象指针名;
                                            对象指针名à成员名;
对象指针在使用之前,也一定要先进行初始化,让它指向一个已经声明过的对象,然后再使用。通过对象指针,可以访问到所指向对象的公有成员。
2、this指针
this指针是一个隐含于每一个类的成员函数中的特殊指针,它用于指向正在被成员函数操作的对象。实际过程是,当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针,然后调用成员函数,成员函数对对象的数据成员进行操作时,就隐含使用了this指针。/**难怪:在成员函数之外无法访问数据成员,找不到对象呀!(当然中间的private,protected另作谈论**/
3、指向类的非静态成员的指针(非指向对象,而是指向对象成员)
指向对象成员的指针使用前也要先声明,再赋值,然后引用,因此首先要声明指向该对象所在类的成员的指针。注意,通过指向成员的指针也只能访问到公有成员
语法形式:类型说明符   类名::*指针名;          //声明指向公有数据成员的指针
             类型说明符   (类名::*指针名)(参数表);//声明指向公有函数成员的指针
对数据成员指针赋值:
             指针名 = &类名::数据成员;
此时还不能通过指针访问变量。类的声明只确定了各个数据成员的类型、所占内存大小以及它们的相对位置,在声明时并不为数据成员分配具体的地址。因此经上述赋值之后,只是说明了被赋值的成员指针式专门用于指向哪个数据成员的,同时在指针中存放该数据成员在类中的相对位置,当然通过这样的指针现在并不能访问什么。
       由于类是通过对象而实例化的,在声明类的对象时才会为具体的对象分配内存空间,这时只要将对象在内存中的起始地址与成员指针中存放的相对偏移结合起来就可以访问到对象的数据成员了。
       语法形式:对象名.*类成员指针名
        或          对象指针名à*类成员指针名
       成员函数指针赋值:
                      指针名 = 类名::函数成员名;
       经过上述对成员函数指针赋值之后,还不能用指针直接调用成员函数,而是需要首先声明类的对象,因为必须要通过对象来调用非静态成员函数。
       利用指针调用成员函数:
                      (对象名.*类成员指针名)(参数表)
     或      (对象指针名à*类成员指针名)(参数表)
4、指向类的静态成员的指针
       类的静态成员可以用普通的指针来指向和访问。/**形式上把静态成员看成普通变量就可以**/
原创粉丝点击