指向对象的指针
在建立对象的时候,变异系统会给每一个对象分配一定的存储空间,以存放其成员。
对象空间的起始地址就是对象的指针。可以定义一个指针变量,用来存放对象的指针。
一个简单的示例1.1:
指向对象成员的指针
对象有地址,存放对象初始地址的指针变量就是指向对象的指针变量。
对象中的成员也有地址,存放对象成员地址的指针变量就是指向对象成员的指针变量。
1.指向对象数据成员的指针
定义指向对象数据成员的方法和定义指向普通变量的方法相同:
数据类型 * 指针变量名
定义指向普通函数的指针的方法是这样的:
数据类型名(* 指针变量名)(参数列表);
如:
要定义指向成员函数的指针变量应该采用以下形式:
我们知道,所有的Student类实例化得到的对象都是公用一个成员函数的,所以我们没有必要指定它是指向那个对象的成员函数的指针,我们只需要定义它是指向该类的成员函数就可以了。
使指针变量指向一个公用成员函数的一般形式为:
在使用时,仍然需要将指针放到具体的对象中使用,(*p)的作用等价于Print()
this指针
每个对象中的数据成员都分别占用存储空间,如果对同一个类定义了n个对象,则有n组同样大小的空间一存放n个对象中的数据成员。
单数不同的对象都调用同一段函数代码段。
那么,当不同对象的成员函数引用数据成员时,怎么能保证引用的是所制定的对象的数据成员呢?
实际上,在每一个成员函数中,都包含一个特殊的指针,这个指针的名字是固定的,称为this指针。
它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址。
例如:
Print()函数中
代码如下:</div>