c++学习笔记(十):运算符重载综合——自定义数组类
来源:互联网 发布:w3cschool mysql 编辑:程序博客网 时间:2024/06/11 06:01
通过几天的对运算符重载的学习,准备自定义一个数组类,并对一些运算符进行重载,话不多说上代码。
定义文件Array.h:
#ifndef _ARRAY_H_#define _ARRAY_H_class Array{private: int mLength; int* mSpace;public: Array(int length); Array(const Array& obj); int length(); void setData(int index, int value); int getData(int index); ~Array();public:int& operator[](int i);Array& operator=(Array &a1);bool operator==(Array &a2);bool operator!=(Array &a2);};//对符号[] = == !=进行重载#endif
业务实现文件Array.cpp:
#include <iostream>#include "Array.h"using namespace std;Array::Array(int length){ if( length < 0 ) { length = 0; } mLength = length; mSpace = new int[mLength];}Array::Array(const Array& obj){ mLength = obj.mLength; mSpace = new int[mLength]; for(int i=0; i<mLength; i++) { mSpace[i] = obj.mSpace[i]; }}int Array::length(){ return mLength;}void Array::setData(int index, int value){ mSpace[index] = value;}int Array::getData(int index){ return mSpace[index];}Array::~Array(){ mLength = -1; delete[] mSpace;}//以下是运算符重载函数 //从数组里面拿元素int& Array::operator[](int i){return mSpace[i];}/*//功能2Array a3(20);a3 = a1;*/Array& Array::operator=(Array &a1){int i = 0;if (this->mSpace != NULL){delete[] mSpace;this->mLength = 0;}//a1的所有元素赋给a3this->mLength = a1.mLength;this->mSpace = new int[a1.mLength];for (i=0; i<this->mLength; i++){mSpace[i] = a1[i];}return *this;}//功能3//if (a1 == a2) //功能3bool Array::operator==(Array &a2){if (this->mLength != a2.mLength){return false;}for (int i=0; i<this->mLength; i++){if (this->mSpace[i] != a2[i]){return false;}}return true;}//if (a1 != a2) //功能4bool Array::operator!=(Array &a2){return !(*this == a2);}
int Test(){ Array a1(10); for(int i=0; i<a1.length(); i++) {a1[i] = i;//a1.operator [](i) = i; } for(int i=0; i<a1.length(); i++) { printf("array %d: %d\n", i, a1[i]); //功能1 } Array a2 = a1; for(int i=0; i<a2.length(); i++) {printf("array %d: %d\n", i, a2[i]); }//功能2Array a3(20);a2 = a3 = a1; //a3.operator=(a1);//a1.operator==(a2);if (a1 == a2) //功能3{printf("相等\n");}else{printf("不相等\n");}if (a1 != a2) //功能4{printf("不相等\n");}else{printf("相等\n");}}
注意:正确运用引用当运算符重载的返回值及参数,前面已讲。
0 0
- c++学习笔记(十):运算符重载综合——自定义数组类
- 【C++】学习笔记五十一——运算符重载
- 自定义数组类运算符重载
- 学习C++——运算符重载
- c++——多态、继承、运算符重载综合例子代码
- 【c++笔记十】运算符重载
- 【笔记-C++】 运算符重载
- 【学习笔记】c++ 类 重载运算符
- 重载运算符( 一)——学习C++笔记
- 重载运算符( 二)——学习C++笔记
- C++学习笔记——运算符重载
- 运算符重载 学习笔记
- 运算符重载学习笔记
- 【C++】【学习笔记】【025-027】运算符重载
- C++学习笔记:数组的操作符重载(包括[]和=运算符)
- C++:重载运算符避免数组越界
- 【十】运算符重载(上)
- C#学习笔记(三)—–C#高级特性:运算符重载
- MySQL数据库的同步配置+MySql读写分离
- request.getParameter() 和request.getAttribute() 区别
- DOM要点总结
- Leetcode -- Median of Two Sorted Arrays
- 网站制作笔记一域名购买与主机备案
- c++学习笔记(十):运算符重载综合——自定义数组类
- hash
- freeBSD的VNET_DEFINE跟SYSCTL_VNET_INT
- GCC编译流程分析
- springmvc中controller返回html页面时页面乱码解法
- PostgreSQL高并发单行更新发生死锁 2015
- ios页面传值
- poj1947 Rebuilding Roads
- Xcode 键盘不显示问题 即设置