3.6对象指针【C++】

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;


发布了36 篇原创文章 · 获赞 17 · 访问量 6274

猜你喜欢

转载自blog.csdn.net/qq_39248307/article/details/78448700