Person.h
#pragma once #include <string> class Person { public: Person(); Person(std::string name, int age) { this->mName = name; this->mAge = age; } ~Person(); public: std::string mName; int mAge; };
Person.cpp
#include "stdafx.h" #include "Person.h" Person::Person() { } Person::~Person() { }
MyArray.hpp
#pragma once template <class T> class MyArray { public: explicit MyArray(int capacity) { this->m_Capacity = capacity; this->m_Size = 0; this->pAddress = new T[this->m_Capacity]; } MyArray(const MyArray& arr) { this->m_Capacity = arr.m_Capacity; this->m_Size = arr.m_Size; this->pAddress = new T[arr.m_Capacity]; for (int i = 0; i < arr.m_Size; i++) { this->pAddress[i] = arr.pAddress[i]; } } T& operator[](int index) { return this->pAddress[index]; } void Push_back(const T& val) { if (this->m_Capacity == this->m_Size) { return; } this->pAddress[this->m_Size] = val; this->m_Size++; } void Pop_back() { if (this->m_Size == 0) { return; } this->m_Size--; } int getSize() { return this->m_Size; } ~MyArray() { if (this->pAddress != nullptr) { delete[] this->pAddress; this->pAddress = nullptr; this->m_Capacity = 0; this->m_Size = 0; } } private: T* pAddress; int m_Capacity; int m_Size; };
main.cpp
// Te03.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; #include "Person.h" #include "MyArray.hpp" void PrintArrayInt(MyArray<int>& arr) { for (int i = 0; i < arr.getSize(); i++) { cout << arr[i] << " "; } cout << endl; } void PrintPerson(MyArray<Person>& personArr) { for (int i = 0; i < personArr.getSize(); i++) { cout << "姓名:" << personArr[i].mName << "年龄:" << personArr[i].mAge << endl; } } void Test01() { MyArray<int> myArrayInt(10); for (int i = 0; i < 9; i++) { myArrayInt.Push_back(i); } myArrayInt.Push_back(100); PrintArrayInt(myArrayInt); myArrayInt.Pop_back(); PrintArrayInt(myArrayInt); } void Test02() { MyArray<Person> myArrayPerson(10); Person p1("张飞", 25); Person p2("马超", 23); Person p3("赵云", 24); Person p4("关羽", 28); Person p5("黄忠", 76); myArrayPerson.Push_back(p1); myArrayPerson.Push_back(p2); myArrayPerson.Push_back(p3); myArrayPerson.Push_back(p4); myArrayPerson.Push_back(p5); PrintPerson(myArrayPerson); } int main() { Test01(); cout << "------------------------------------" << endl; Test02(); return 0; }