对象指针
1,指向对象的指针
Time * pt;
Time t1;
pt = &t1;
一个对象存储空间的起始地址就是对象的指针,可以定义一个指针变量,用来存放对象的地址,这就是指向对象的指针变量。
访问对象成员
pt -> hour;
(*pt).getTime();
2,指向对象成员的指针
(1),指向对象数据成员的指针
int *p1;
p1 = &t1.hour;
cout<<*p1<<endl;
(2)指向对象成员函数的指针
先复习一下指向普通函数的指针变量的定义方法
void (*p) ();//p是指向void型函数的指针变量
可以使p指向一个函数,并通过指针变量调用函数:
p= fun; //将fun函数的指针入口地址付给了指针变量p,p就指向了函数fun;
(*p)(); //调用fun函数
但是不能类似的指向成员函数,如以下是错误的
p = t1.getTime();
因为编译系统要求指针变量的类型必须与赋值号右侧额类型相匹配,但指针变量p与类无关,而getTime函数却属于Time类。
所以应采用下面的方式:
void(Time::*p2)();//定义p2为指向Time类中公用成员函数的指针变量
注意(Time*p2)两侧的括号不能去掉,因为()的优先级高于*,没有括号,就变成了
void(Time::*(p2()); //这是返回值为void类型指针的函数。
定义指向公用函数的指针变量的一般形式为
数据类型名(类名::指针变量名)(参数列表);
可以让他指向一个公用成员函数,
p2 = &Time::getTime;
C++之对象指针
最新推荐文章于 2023-01-19 20:58:12 发布