一、对象指针:
作用:指向对象的指针。用来容纳对象地址的指针,指向的是一个对象。
定义:类名 *对象指针名;eg:Time *ptr;
Time *ptr;//定义对象指针
Time t1; //定义对象t1;
ptr=&t1; //将对象t1的地址赋给对象指针;
使用方式:
*ptr 表示ptr指向的对象t1;
(*ptr).hour 表示ptr指向的对象中hour的成员;
ptr->hour 表示ptr指向的对象中hour的成员;
ptr->get() 表示ptr指向的对象中get()成员函数;
二、指向对象成员的指针:
对象成员有两类,一是数据成员,二是函数成员。因此指向对象的成员的指针也分为两种,一是普通的指向数据的指针,二是指向函数的指针。
- 指向数据成员的指针,即数据指针。
int *p; //定义指向整形数据的指针; p=&t.hour; //将对象的某个数据成员的地址赋给p,p指向t.hour;
- 指向函数成员的指针,即函数指针。
函数指针的定义: 函数返回值类型 (*指针变量名)(函数参数表列)例如:void(*p)();
void(*p)();//函数指针的定义原则: 函数返回值类型 (*指针变量名)(函数参数表列)
为了确保函数指针与指向的函数相匹配,必须实现函数返回值、函数参数表列相匹配。在指向成员函数的指针中,除了上述两点外,还必须满足所属类的匹配。
因此,指向对象成员函数的指针定义及使用原则如下:
数据类型名 (类名::*指针变量名)(参数表列);
void(Time::*p)();//定义指向Time类中成员函数的指针
使指针变量指向一个类中成员函数的一般形式:
指针变量名=&类名::成员函数名 ;
p=&Time::get;//将time类中成员函数get的地址赋给函数指针p;