C++的对象数组、对象指针是什么?【案例解析】

本文通过两个实例详细介绍了C++中对象数组及对象指针的应用。首先,通过创建对象数组并调用成员函数计算体积,展示了如何在数组中存储多个相同类型的对象;其次,通过对象指针演示了如何间接访问对象成员,并使用对象函数指针调用成员函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、对象数组(盛放对象的数组)

#include <iostream>
using namespace std;

//声明一个类为Box 
class Box
{
public:
	//声明带有默认参数的构造函数,该构造函数给私有成员赋值 
	Box(int h=10, int w=12, int len=15): height(h),	width(w), length(len){  }
	int Volume();  //声明一个计算体积的函数
private:
	int height;
	int width;
	int length; 
};

//对共有成员函数进行定义 
int Box::Volume()
{
	return(height * width * length);  //返回计算的体积 
}

int main()
{
	//定义对象数组(装有3个对象的数组) 
	Box aa[3]={
		Box(1, 1, 1),  //对三个对象分别定义,并初始化构造函数(传入参数)
		Box(2, 2, 2),
		Box(3, 3, 3) 
	};
	cout << "对象盒子1的体积为:"  << aa[0].Volume() << endl;  //调用对象数组中对象1的Volume函数
	cout << "对象盒子2的体积为:"  << aa[1].Volume() << endl;  //调用对象数组中对象2Volume函数
	cout << "对象盒子3的体积为:"  << aa[2].Volume() << endl;  //调用对象数组中对象3的Volume函数	
} 

1-1

二、对象指针(指向对象的指针)

#include <iostream>
using namespace std;

//定义类Time 
class Time
{
public:
	Time(int, int, int);  //声明构造函数
	int hour;  //声明3个共有变量 
	int minute;
	int sec; 
	void show_time();  //声明共有成员函数 
};

//定义类Time的构造函数
Time::Time(int h, int m, int s)
{
	hour= h;  //用传入的参数来对共有成员数据进行初始化 
	minute= m;
	sec= s;
} 

//定义共有成员函数
void Time::show_time()
{
	cout << hour << ":"  << minute << ":" << sec << endl;
}

int main()
{
	Time t1(12, 23, 34);  //由Time类实例化对象t1
	int *p1= &t1.hour;  //定义指向整型数据的指针p1,指向t1对象的共有成员数据hour
	cout << "指针p1指向地址中存有:" << *p1 << endl;  //输出p1指向地址中存放的数据 
	t1.show_time();  //调用对象t1的共有成员函数
	
	//对象指针 
	Time *p2= &t1;  //定义对象指针p2,指向对象t1的首地址 
	p2->show_time();  //调用指针p2指向对象地址的成员函数
	
	//对象函数指针:指向对象函数的指针 
	void(Time::*p3)();  //定义指向Time类共有成员函数的指针变量p3
	p3= &Time::show_time;  //使p3指向Time类共有成员函数show_time,不能加括号,否则就是调用了  
	(t1.*p3)();  //调用对象t1中p3所指的成员函数,即t1.show_time()
	
	return 0; 
}

2-2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值