C++数组类的封装案例(小练习)

440 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

1️⃣需求

  • 封装一个类,基于数组完成

功能:

  1. 添加数据
  2. 获取数据
  3. 修改数据
  4. 打印数据

💡首先是头文件的编写

如下所示:

image.png

注意:

在上述的代码中,我们在类的内部直接定义公共接口的方法,这样会使得getCapacity()和igetSize() 变成为内联函数


💡接下来就是对类内容的具体实现,即myArray.cpp文件的编写

具体如下:

image.png

还有四个成员函数

image.png

💡最后是源文件的编写

  • 在主函数中,测试我们封装的数组类!

image.png

运行结果如下:

image.png

2️⃣完整代码

结构如下:

image.png


完整代码如下:

🌱myArray.h

class myArray {
public:
	myArray();					//无参构造函数
	myArray(int capacity);		//有参构造函数
	myArray(const myArray& arr);//拷贝构造函数
	~myArray();					//析构函数

	void pushBack(int data);				//添加数据
	int getData(int position);				//获取指定位置数据
	void setData(int position, int data);	//修改指定位置数据
	void arrPrint();						//打印数组

	int getCapacity() {
		//公共接口,获取数组容量
		return m_Capacity;
	}

	int getSize() {
		//公共接口,获取数组大小
		return m_Size;
	}
private:
	int m_Capacity;  //容量,即数组最多能存放多少数据
	int m_Size;		 //大小,即数组的大小
	int* pAddress;	 //底层维护堆区的数组
};

🌱myArray.cpp

#include <iostream>
#include <string>
#include "myArray.h"
using namespace std;

//无参构造函数
myArray::myArray()
{
	m_Capacity = 100;
	m_Size = 0;
	pAddress = new int[m_Capacity];
}
//有参构造函数
myArray::myArray(int capacity)
{
	m_Capacity = capacity;
	m_Size = 0;
	pAddress = new int[m_Capacity];
}
//拷贝构造函数
myArray::myArray(const myArray& arr)
{
	m_Capacity = arr.m_Capacity;
	m_Size = arr.m_Size;
	pAddress = new int[arr.m_Capacity];
	for (int i = 0; i < arr.m_Size; i++) {
		pAddress[i] = arr.pAddress[i];
	}
}
//析构函数
myArray::~myArray()
{
	if (pAddress != nullptr) {
		delete[] pAddress;
		pAddress = nullptr;
	}
}

//添加数据到数组尾部
void myArray::pushBack(int data)
{
	pAddress[m_Size] = data;
	m_Size++;
}
//获取指定位置数据
int myArray::getData(int position)
{
	return pAddress[position];
}
//修改指定位置数据
void myArray::setData(int position, int data)
{
	pAddress[position] = data;
}
//打印数组
void myArray::arrPrint()
{
	cout << "[";
	for (int i = 0; i < m_Size; i++) {
		cout << getData(i);
		if (i != m_Size - 1) cout << ',';
	}
	cout << "]" << endl;
}


🌱main.cpp

#include <iostream>
#include "myArray.h"
using namespace std;
int main() {
	myArray arr1;
	cout << "数组容量为:" << arr1.getCapacity() << endl;
	cout << "数组的大小为:" << arr1.getSize() << endl;
	cout << "打印数组:\n";
	arr1.arrPrint();
	cout << "==============================="<<endl;
	arr1.pushBack(1);
	arr1.pushBack(2);
	arr1.pushBack(3);
	arr1.pushBack(4);
	arr1.pushBack(5);
	cout << "添加数据后,数组容量为:" << arr1.getCapacity() << endl;
	cout << "添加数据后,数组的大小为:" << arr1.getSize() << endl;
	cout << "再次打印数组:\n";
	cout << "===============================" << endl;
	cout << "改动数组第三个位置的元素后,再次打印数组:\n";
	arr1.setData(2, 888);
	arr1.arrPrint();
	return 0;
}

3️⃣写在最后

好了,一个简单的数组类案例就是这样,功能比较简单,你可以试着完善这个数组类!

欢迎来评论区一起探讨!如果文章对你有帮助,点赞支持是我创作的动力!