C++学习笔记(二十五):实战案例->数组类的封装(含完整代码)

前言
作者简介:大家好,我是翼同学
个人主页:翼同学的CSDN博客
系列专栏:【C++学习笔记】更新中…
备注:如果文章有误,请指正,万分感谢!让我们一起学习,一起进步。
✅最后:如果文章对您有帮助,请三连支持一下博主哦。

目录

  • 1️⃣案例需求
  • 2️⃣完整代码
    • myArray.h
    • myArray.cpp
    • main.cpp
  • 3️⃣写在最后


1️⃣案例需求

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

功能:

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

首先是头文件的编写

如下所示:

C++学习笔记(二十五):实战案例->数组类的封装(含完整代码)_第1张图片

注意:

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

具体可参考这篇文章:C++学习笔记(二十):类的入门指南


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

具体如下:

C++学习笔记(二十五):实战案例->数组类的封装(含完整代码)_第2张图片

还有四个成员函数

C++学习笔记(二十五):实战案例->数组类的封装(含完整代码)_第3张图片

最后是源文件的编写

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

C++学习笔记(二十五):实战案例->数组类的封装(含完整代码)_第4张图片

运行结果如下:

C++学习笔记(二十五):实战案例->数组类的封装(含完整代码)_第5张图片

2️⃣完整代码

结构如下:
C++学习笔记(二十五):实战案例->数组类的封装(含完整代码)_第6张图片


完整代码如下:

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 
#include 
#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 
#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️⃣写在最后

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

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

你可能感兴趣的:(【C++学习笔记】,学习,c++,开发语言,后端)