本段代码是根据黑马先生教学的内容手撕出来的。特此感谢黑马先生
内容包含类数组类的设计,其中有构造函数,析构函数,拷贝函数,operator重定义=操作符,以及尾插和尾删法的运用。

hpp文件内容
#pragma once
#ifndef MyArray
#include <iostream>
#include <string>
#include <fstream>using namespace std;template<class T>
class MyArray
{public:MyArray(int Capacity)//构造函数初始化数组{//cout << "调用有参构造" << endl;this->m_Capacity = Capacity;this->m_Size = 0;this->m_Address = new T[this->m_Capacity];cout << "请输入数组的成员数量:" << endl;cin >> this->m_Size;for (int i = 0; i < this->m_Size; i++){this->m_Address[i] = i;cout << this->m_Address[i] << endl;}}MyArray(const MyArray& arr)//拷贝构造函数{//cout << "调用拷贝构造" << endl;this->m_Size = arr.m_Size;this->m_Capacity = arr.m_Capacity;this->m_Address = new T[this->m_Capacity];for (int i = 0; i < this->m_Size; i++){m_Address[i] = arr.m_Address[i];cout << this->m_Address[i] << endl;}}MyArray& operator=(const MyArray& arr) //operator重构=的拷贝构造函数{//cout << "调用operator构造" << endl;if (this->m_Address != NULL){delete[]this->m_Address;this->m_Capacity = 0;this->m_Size = 0;}this->m_Size = arr.m_Size;this->m_Capacity = arr.m_Capacity;this->m_Address = new T[this->m_Capacity];for (int j = 0; j < this->m_Size; j++){this->m_Address[j] = arr.m_Address[j];cout << this->m_Address[j] << endl;}return *this;}//尾插法MyArray& Push_Back(MyArray& arr){if (this->m_Capacity == this->m_Size){cout << "数组空间已满" << endl;}else{cout << "请输入要插入的内容:" << endl;T temp;cin >> temp;this->m_Address[m_Size] = temp;this->m_Size++;}return *this;}//尾删法MyArray& Pop_Back(MyArray& arr){if (this->m_Size == 0){cout << "数组为空" << endl;}else{this->m_Size--;}return *this;}void DisplayArr(MyArray& arr){for (int i = 0; i < this->m_Size; i++){cout << this->m_Address[i] << endl;}}~MyArray()//析构函数{//cout << "调用析构函数" << endl;if (this->m_Address != NULL){delete[]this->m_Address;}this->m_Address = NULL;}
private:T* m_Address;int m_Capacity;int m_Size;
};#endif // !MyArray#pragma once
#ifndef MyArray
#include <iostream>
#include <string>
#include <fstream>using namespace std;template<class T>
class MyArray
{public:MyArray(int Capacity)//构造函数初始化数组{//cout << "调用有参构造" << endl;this->m_Capacity = Capacity;this->m_Size = 0;this->m_Address = new T[this->m_Capacity];cout << "请输入数组的成员数量:" << endl;cin >> this->m_Size;for (int i = 0; i < this->m_Size; i++){this->m_Address[i] = i;cout << this->m_Address[i] << endl;}}MyArray(const MyArray& arr)//拷贝构造函数{//cout << "调用拷贝构造" << endl;this->m_Size = arr.m_Size;this->m_Capacity = arr.m_Capacity;this->m_Address = new T[this->m_Capacity];for (int i = 0; i < this->m_Size; i++){m_Address[i] = arr.m_Address[i];cout << this->m_Address[i] << endl;}}MyArray& operator=(const MyArray& arr) //operator重构=的拷贝构造函数{//cout << "调用operator构造" << endl;if (this->m_Address != NULL){delete[]this->m_Address;this->m_Capacity = 0;this->m_Size = 0;}this->m_Size = arr.m_Size;this->m_Capacity = arr.m_Capacity;this->m_Address = new T[this->m_Capacity];for (int j = 0; j < this->m_Size; j++){this->m_Address[j] = arr.m_Address[j];cout << this->m_Address[j] << endl;}return *this;}//尾插法MyArray& Push_Back(MyArray& arr){if (this->m_Capacity == this->m_Size){cout << "数组空间已满" << endl;}else{cout << "请输入要插入的内容:" << endl;T temp;cin >> temp;this->m_Address[m_Size] = temp;this->m_Size++;}return *this;}//尾删法MyArray& Pop_Back(MyArray& arr){if (this->m_Size == 0){cout << "数组为空" << endl;}else{this->m_Size--;}return *this;}void DisplayArr(MyArray& arr){for (int i = 0; i < this->m_Size; i++){cout << this->m_Address[i] << endl;}}~MyArray()//析构函数{//cout << "调用析构函数" << endl;if (this->m_Address != NULL){delete[]this->m_Address;}this->m_Address = NULL;}
private:T* m_Address;int m_Capacity;int m_Size;
};#endif // !MyArray
****************************************************************************
cpp文件内容
#include "MyArray.hpp"int main()
{MyArray<int> arr1(5);arr1.Push_Back(arr1);arr1.DisplayArr(arr1);arr1.Pop_Back(arr1);arr1.DisplayArr(arr1);/*MyArray<int> arr2(arr1);MyArray<int> arr3(10);arr3 = arr1;*/return 0;
}

C++实现数组类模板相关推荐

  1. 第十四周项目三-数组类模板

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月2日 *版 本 ...

  2. 【C++深度剖析教程39】实现C++数组类模板

    上一篇文章在那个学习了多参数类模板与特化的分析:点击链接查看上一篇文章:类模板深度剖析 本篇文章学习记录: 数值型模板参数 实现C++数组类模板 1.模板中的数值型参数 模板参数可以是数值型参数.也就 ...

  3. STL3-MyArray动态数组类模板实现

    注意 1.右值的拷贝使用 2.拷贝构造函数的使用 #include<iostream> using namespace std;template<class T> class ...

  4. 问模板函数、函数模板,模板类、类模板的区别的问题?

    问模板函数.函数模板,模板类.类模板的区别的问题? - 赵保龙 - 博客园 问模板函数.函数模板,模板类.类模板的区别的问题? 在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替 ...

  5. C++函数模板与类模板的区别

    类模板: C++ 除了支持函数模板,还支持类模板(Class Template).函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中.类模板的目的同样 ...

  6. 模板类与类模板、函数模板与模板函数等的区别

    在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用.下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误. 这几个词是: 函数指针--指针函数 数组指 ...

  7. 第十四周项目61-数组类模板

    /* *Copyright (c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:text.cpp *作者:李德彪 *完成日期:2015年6月1日 *版本号:v ...

  8. 模板函数与函数模板 类模板和模板的说明

    一,模板的概念. 引入模板的原因: 我们已经学过重载,对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同.正确的调用重载函数.例如,为求两个数的最大值,我们定义MAX()函数需要对不同 ...

  9. [YTU]_2642 (填空题:类模板---求数组的最大值)

    Description 类模板---求数组的最大值 找出一个数组中的元素的最大值,数组大小为10.(用类模板来实现) 数组元素类型作为类模板的参数. 在下面的程序段基础上完成设计,只提交begin到e ...

最新文章

  1. 人工智能人才争抢白热化?学好数学才能C位出道
  2. java 格式化位数_java数字如何格式化?
  3. 写段QTP脚本与大家一起分享
  4. mysql调优的一些方面
  5. 看完此文再不懂区块链算我输:手把手教你用Python从零开始创建区块链
  6. H - Prince and Princess 计蒜客 - 42402
  7. 用fiddler解决跨域访问
  8. [算法] 已知前序和中序遍历,建立二叉树
  9. 十年站长人生路不言放弃 访资深个人站长游伟
  10. python爬虫 同花顺_python 爬虫--同花顺-使用代理
  11. CVX使用基础教程-结合官网教程翻译
  12. Cisco思科交换机Vlan划分
  13. html5 手机uc浏览器 复制链接,UC浏览器里任意复制粘贴文本的方法
  14. shell中的美元符号
  15. pd.diff()函数详解
  16. 光明行动:共同呵护好孩子的眼睛——广西实施光明行动实地考察调研综述
  17. java过滤微信昵称emoji表情
  18. iOS -- 使用蒲公英进行内测
  19. 痛惜!年仅43岁,又一位985高校博导因病逝世
  20. (八)QRJDC正式版/QQ扫码登录直达青龙/Docker上的部署教程/很干很干/没水喝【2020年5月1日】

热门文章

  1. 决策树(十三)--XGBoost参数调优完全指南
  2. git学习指南_GIT 学习指南
  3. 提高存储器速度的技术
  4. MySQL join 与where的执行顺序
  5. 全文搜索引擎 Elasticsearch 入门概念
  6. Java根据路径获取文件内容的三种场景分析
  7. 关于opencv设置视频的属性无效问题
  8. 【转】Build Your own Simplified AngularJS in 200 Lines of JavaScript
  9. Redis Nosql数据库
  10. JQuery中如何动态修改input的type属性