C++对象数组与对象指针的用法【C++初学面向对象编程】

2023-05-16

文章目录

    • 一、对象数组
    • 二、对象指针

一、对象数组

1、概念
对象数组本质上就是:数组中每一个元素都是同一个类的对象。

//定义对象数组(装有3个对象的数组) 
Box aa[3]={
	Box(1, 1, 1),  //对三个对象分别定义,并初始化构造函数(传入参数)
	Box(2, 2, 2),
	Box(3, 3, 3) 
};

2、练习代码

#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函数	
} 

01

二、对象指针

1、概念
对象指针本质上就是:指向对象成员的指针。
这个对象存储空间的起始地址就是对象的指针,可以定义一个指针变量,用来存放对象的地址,这就是指向对象的指针变量。

2、对象指针的用法规则

  • 定义指向对象的指针形式:类名 *对象指针名;
    定义指向数据成员的指针:对象指针名*成员名;
//假如已经定义了一个Time类,则对象指针的使用如下:
Time *pt;//定义pt 为指向Time类对像的指针变量
Time t1;//定义t1为Time类对像
pt= &t1;//将t1的起始地址赋给pt
void (*p)();  //p是指向函数的指针的指针变量
  • 指向成员函数的指针变量的定义
    (1)数据类型名 (类名::*指针变量名)();
    (2)使指针变量指向一个公用成员函数的一般形式为:指针变量名=&类名::成员函数名;
    即为,该指针指向成员函数的首地址。

  • 注意:对象指针在使用之前,也一定要先进行初始化,让它指向一个已经声明过的对象,然后再使用。通过对象指针,可以访问到所指向对象的公有成员。

3、对象指针访问成员数据和成员函数

//*p为已经定义的Time类对象指针
(*pt).hour      //pt所指向的对象中的hour成员,即t1.hour
// pt把指向的对象中的get_time函数,即t1.get_time()
pt->get_time()    //方法1
(*pt).get_time()  //方法2

4、对象指针练习代码

#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; 
} 

02

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++对象数组与对象指针的用法【C++初学面向对象编程】 的相关文章

随机推荐