项目场景:
黑马程序员c++教程中利用类模板实现数组封装案例
在黑马程序员c++教程中,老师在讲解类模板时,使用类模板创建了数组类。通过这一类模板,可以创建不同数据类型的数组,并对数组进行一系列操作。其中,我们可以对运算符“[]”进行重载,来实现通过“方括号内下标”的方式直接访问数组元素。
问题描述
在测试代码的过程中,如果通过下标的方式访问数组元素,会出现触发断点的bug
以下是数组类模板的实现代码:
#pragma once
#include <iostream>
#include <string>
using namespace std;
template<typename T>
class MyArray
{
public:
//构造函数(容量)
MyArray(int capacity);
//拷贝构造
MyArray(const MyArray& arr);
//operator=
MyArray& operator=(const MyArray& arr);
//尾插元素
void PushBack(T x);
//尾删元素
void PopBack(T x);
//利用[下标]访问数组元素
T& operator[](const int i);
//获取数组大小
int GetSize();
//获取数组容量
int GetCapacity();
//析构函数
~MyArray();
private:
T* m_arr;
int m_size;
int m_capacity;
};
//构造函数(容量)
template<typename T>
MyArray<T>::MyArray(int capacity)
{
this->m_arr = new T(capacity);
this->m_size = 0;
this->m_capacity = capacity;
cout << "MyArray的构造函数调用" << endl;
}
//拷贝构造函数
//需要深拷贝
template<typename T>
MyArray