1.指向对象数据成员的指针
定义指向对象数据成员的指针变量的一般形式为:
数据类型名 * 指针变量名
如int *p1;//定义指向整形数据的指针变量
2.指向对象成员函数的指针
定义指向公用成员函数的指针变量的一般形式为
数据类型名(类名::* 指针变量名)(参数表列);
如:void(Time::*p2)( );
可以让它指向一个公用成员函数,只需把公用成员函数的入口地址赋给一个指向公用成员函数的指针变量即可。
使指针变量指向一个公用成员函数的一般形式为
指针变量名=&类名 ::成员函数名
如 p2=&Time::get_time;
例题:用不同方法输出时间记录器的时分秒,注意对象指针的使用方法
#include<iostream>
using namespace std;
class Time{
public:
Time(int,int,int);//声明结构成员函数
int hour;
int minute;
int sec;
void get_time();//声明公有成员函数
};
Time::Time(int h,int m,int s)
{
hour=h;
minute=m;
sec=s;
}
void Time::get_time()//定义公有成员函数
{cout<<hour<<":"<<minute<<":"<<sec<<endl;}
int main(){
Time t1(10,13,56);//定义Time类对象并初始化
int *p1=&t1.hour;//定义指向整形数据的指针变量p1,并使p1指向t1.hour
cout<<*p1<<endl;//输出p1所指的数据成员t1.hour
t1.get_time();//调用对象t1的成员函数get_time
Time *p2=&t1;//定义指向Time类对象的指针变量p2,并使p2指向t1
/*拆解成3步:
Time *p2; 定义P2为指向Time类对象的指针变量
Time t1; 定义t1为Time类对象
p1=&t1; 将t1的起始地址赋给p2
*/
p2->get_time();//调用p2所指向对象的get_time函数
void(Time::*p3)();//定义指向Time类公用成员函数逇指针变量p3
p3=&Time::get_time;//使p3指向Time类公用成员函数 get_time
(t1.*p3)();//调用对象p1中p3所指的成员函数,即t1.gettime()
}