C++实现数组类模板
本段代码是根据黑马先生教学的内容手撕出来的。特此感谢黑马先生
内容包含类数组类的设计,其中有构造函数,析构函数,拷贝函数,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++实现数组类模板相关推荐
- 第十四周项目三-数组类模板
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月2日 *版 本 ...
- 【C++深度剖析教程39】实现C++数组类模板
上一篇文章在那个学习了多参数类模板与特化的分析:点击链接查看上一篇文章:类模板深度剖析 本篇文章学习记录: 数值型模板参数 实现C++数组类模板 1.模板中的数值型参数 模板参数可以是数值型参数.也就 ...
- STL3-MyArray动态数组类模板实现
注意 1.右值的拷贝使用 2.拷贝构造函数的使用 #include<iostream> using namespace std;template<class T> class ...
- 问模板函数、函数模板,模板类、类模板的区别的问题?
问模板函数.函数模板,模板类.类模板的区别的问题? - 赵保龙 - 博客园 问模板函数.函数模板,模板类.类模板的区别的问题? 在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替 ...
- C++函数模板与类模板的区别
类模板: C++ 除了支持函数模板,还支持类模板(Class Template).函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中.类模板的目的同样 ...
- 模板类与类模板、函数模板与模板函数等的区别
在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用.下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误. 这几个词是: 函数指针--指针函数 数组指 ...
- 第十四周项目61-数组类模板
/* *Copyright (c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:text.cpp *作者:李德彪 *完成日期:2015年6月1日 *版本号:v ...
- 模板函数与函数模板 类模板和模板的说明
一,模板的概念. 引入模板的原因: 我们已经学过重载,对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同.正确的调用重载函数.例如,为求两个数的最大值,我们定义MAX()函数需要对不同 ...
- [YTU]_2642 (填空题:类模板---求数组的最大值)
Description 类模板---求数组的最大值 找出一个数组中的元素的最大值,数组大小为10.(用类模板来实现) 数组元素类型作为类模板的参数. 在下面的程序段基础上完成设计,只提交begin到e ...
最新文章
- 人工智能人才争抢白热化?学好数学才能C位出道
- java 格式化位数_java数字如何格式化?
- 写段QTP脚本与大家一起分享
- mysql调优的一些方面
- 看完此文再不懂区块链算我输:手把手教你用Python从零开始创建区块链
- H - Prince and Princess 计蒜客 - 42402
- 用fiddler解决跨域访问
- [算法] 已知前序和中序遍历,建立二叉树
- 十年站长人生路不言放弃 访资深个人站长游伟
- python爬虫 同花顺_python 爬虫--同花顺-使用代理
- CVX使用基础教程-结合官网教程翻译
- Cisco思科交换机Vlan划分
- html5 手机uc浏览器 复制链接,UC浏览器里任意复制粘贴文本的方法
- shell中的美元符号
- pd.diff()函数详解
- 光明行动:共同呵护好孩子的眼睛——广西实施光明行动实地考察调研综述
- java过滤微信昵称emoji表情
- iOS -- 使用蒲公英进行内测
- 痛惜!年仅43岁,又一位985高校博导因病逝世
- (八)QRJDC正式版/QQ扫码登录直达青龙/Docker上的部署教程/很干很干/没水喝【2020年5月1日】