3.6.1指向对象的指针
Box box; //定义一个Box类对象box
Box *p = &box;//定义指针指向box
//通过指针p和运算符->来访问对象box的公用成员函数Volume
cout << p->Volume() << endl;
//通过指针p和*来访问对象box的公用成员函数Volume
cout << (*p).Volume;
3.6.2指向对象数组的指针
对象成员分为两大类,一类的数据成员一类是成员函数
1.指向对象数据成员的指针
指向数据 成员的指针和普通指针完全相同,其声明格式如下
数据类型名 * 指针名;
使指针指向对象的公用数据成员使用如下语句
指针=&对象名.数据成员名
int *p=& a.date;
2.指向成员函数的指针
指向对象成员函数的指针与指向函数的指针是有区别的,区别在于
(1)定义指向对象成员函数的指针时,需要在其前面加上成员函数所属的类名及::。
(2)指向对象成员函数的指针,不但要匹配将要指向函数的参数类型、个数和返回值类型,还要匹配将要指向函数所属的类
指向普通函数的指针:返回值类型 (*指针名) (参数表);
指向成员函数的指针:返回值类型(类名::*指针名)(参数表);
int main()
{
Box box(2, 2, 2);//创建Box的对象box
float(Box::*p)();//定义指向Box类的成员函数Volume的指针p
p = & Box::Volume();//给指针p赋值,使其指向成员函数Volume
//调用指针p指向的函数
cout << "The Volume of box is:" << (box.*p)() << endl;
system("pause");
return 0;
}
简化:float(box::*p)()=&Box::volume;