菜鸟的C++学习笔记:运算符的重载
2019-04-03 10:42
155 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43557177/article/details/88989925
运算符重载格式:
返回类型(空格)operator(要重载的运算符)(这里是个简单的括号)(里面放入形式参数)
理解:
运算符的重载,在本质上来讲是对特殊情况下的运算符进行一个重新定义
例子:
#include<iostream> using namespace std; class com{ //定义一个类,有实数和虚数 public: double real; double imag; com(double a,double b); com() { this->imag=0; this->real=0; } com operator+(com &test) { com now; now.real=this->real+test.real; now.imag=this->imag+test.imag; return now; } }; com::com(double a,double b) { this->imag=a; this->real=b; } int main() { com a1; com a2(3,4); cout<<"a2:"<<a2.imag<<" "<<a2.real<<endl; com a3(5,6); cout<<"a3:"<<a3.imag<<" "<<a3.real<<endl; a1=a2+a3; cout<<a1.real<<" "<<a1.imag<<endl; return 0; }
这一程序中运算符重载部分:
com operator+(com &test) { com now; now.real=this->real+test.real; now.imag=this->imag+test.imag; return now; }
目的是让声明的com类可以相加,并为其定义相加的法则。
这里不仅仅可以重载‘+’,‘-’等运算符,‘[]’也是可以的
什么场面我没见过 ,这场面我真的头一次见
例子:
#include <iostream> #define MAX 10 using namespace std; class ARRY { private: int a[MAX]; public: ARRY(int x)//给数组赋值 { int i; for(i=0;i<MAX;i++) { a[i]=x+i; } } int& operator[](int i)//因为返回的是数组的地址,因此要用int& { if(i>MAX) { return a[0]; } return a[i]; } }; int main() { ARRY A(2); cout<<A[2]<<endl; cout<<A[3]<<endl; cout<<A[100]<<endl; return 0; }
注意:
1.参与运算符重载的至少有一个类。
2.大多数的运算符是可以重载的,但::(域运算符),.*(成员指针运算符),sizeof,?:(条件运算符)(在网上查了一下才知道名字,捂脸.jpg)不可以重载。
3.重载运算符不会改变运算符的优先级和其结合性。
4.重载函数可以定义在类内,当然也可以定义为一个友元函数。
以上是个人的学习笔记,有不对的地方欢迎各位大佬指正。
相关文章推荐
- C++学习笔记----------运算符的重载
- 【菜鸟C++学习笔记】9.三目运算符
- C++学习笔记(三) 域运算符 new delete运算符 重载 name managling与extern"c" 带默认参数函数
- 【菜鸟C++学习笔记】25.函数重载
- 【菜鸟C++学习笔记】7.运算符与表达式
- 新手学习C++笔记4:函数的原型化与重载
- C++学习笔记14 操作符的重载
- 【C++学习笔记】函数返回和函数重载
- C++ 学习 笔记(菜鸟级,自我备忘)
- 【菜鸟C++学习笔记】2.命名空间的作用
- 我的学习笔记——c++拷贝构造函数,重载赋值操作符
- c++学习笔记 -- 下标运算符
- C++菜鸟学习笔记1
- 【菜鸟C++学习笔记】19.this指针
- C++学习笔记:为什么不要重载逻辑与和逻辑或&& || 操作符
- 【菜鸟C++学习笔记】13.while语句
- 【菜鸟C++学习笔记】14.for语句
- C++菜鸟学习笔记——算法篇
- 【C++学习笔记】函数的重载
- C++基础学习笔记----第四课(函数的重载、C和C++的相互调用)