c++中重载运算符
重载运算符
1,成员函数运算符
运算符重载为类的成员函数一般格式如下
<函数类型> operator <运算符> (参数表)
{函数体}
调用成员函数运算符如下
<对象名>. operator <运算符>(参数)
2.友元函数运算符
一般格式:friend <函数类型> operator <运算符> (参数表)
{函数体}
当运算符为类的友元函数时,没有隐含的this指针,通过函数的形参进行传递函数的参数和操作类
一般情况下,单目运算符最好重载为类的成员函数, 双目运算符则最好重载为类的友元函数,=, () , [] , -> 不能重载为类的友元函数。
3重载前置运算符
成员运算符函数形式:ob.operator ++()
友元函数运算符形式:operator ++ (类名 & obj)
重载后置运算符
成员运算符函数形式:ob .operator ++(int)
友元运算符函数形式:operator ++(类名 & obj , int)
(用是否在参数列表中有关键字int,来区分前置还是后置)
4.插入运算符和析取运算符的重载
1)插入运算符重载
对运算符<< 进行重载,能够输出各种标准类型的数据,其原型如下
ostream & operator << (ostream & ,类名 & 对象)
2)析取运算符重载
对运算符>>进行重载,能输出各种类型的数据,其原型如下
istream & operator << (istream &,类名 & 对象)
小结
双目运算符重载为类的成员函数时,函数只显示说明一个参数,该参数是运算符的右操作数
前置单目运算符重载为类的成员函数时,不需要显示说明参数,即函数没有形参。
后置单目运算符重载为类的成员函数时,函数要有一个整形实参。
规则
五个不能重载的运算符 . .* :: sizeof ?:
重载不能改变运算符运算对象的个数
重载不能改变运算符的优先级
重载不能改变运算符的结合性
重载运算符的函数不能有默认参数
重载的的运算符必须和用户定义的自定义类型的对象一起使用,其参数至少应该有一个是类对象或类对象的应用。
写了一个小例子如下
例子如下
#include<iostream>
#include<string>
#include<iomanip> using namespace std; class Complex
{
public:
Complex(){
real=; img=;
}
Complex(double r , double i){real = r; img = i;}
Complex operator + (Complex &c1);
Complex operator - (Complex &c1);
void display(); private:
double real;
double img; }; Complex Complex :: operator + (Complex &c1)
{
Complex c;
c.real = real + c1.real;
c.img = img + c1.img;
return c;
} Complex Complex :: operator - (Complex &c1)
{
Complex c;
c.real = real - c1.real;
c.img = img - c1.img;
return c;
} void Complex :: display()
{
cout << "("<< real << ", "<< img << "i)" << endl;
} int main(int argc , char **argv)
{
Complex c(,) , c1(,) ,c2 , c3;
c2 = c + c1;
c3 = c - c1;
cout << "c+c1=";
c2.display();
cout << "c-c1=";
c3.display();
return ;
}
c++中重载运算符的更多相关文章
- 高精度运算略解 在struct中重载运算符
高精度 高精度,即高精度算法,属于处理大数字的数学计算方法.在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字. 重载运算符 运算符重载,就是对已有的运算符重新进行 ...
- 【C++】C++中重载运算符和类型转换
输入输出运算符 输入输出运算符 输入输出运算符 算术和关系运算符 相等运算符 关系运算符 赋值运算符 复合赋值运算符 下标运算符 递增和递减运算符 成员访问运算符 函数调用运算符 lambda是函数对 ...
- c++中有些重载运算符为什么要返回引用
事实上,我们的重载运算符返回void.返回对象本身.返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值. 那么什么情况下要返回对象的引用呢? 原因有两个: 允许进 ...
- C++中的运算符重载
首先思考以下几个问题: 1.什么是运算符重载? 2.为什么要重载运算符,它有什么用? 3.可以重载哪些运算符? 4.重载运算符有哪些规则? 一.基本概念 我们在程序中使用各种操作符,比如加(+).赋值 ...
- C++中的运算符重载注意事项
1.C++中的运算符重载的方式有三种: a.类成员函数重载 b.友元函数重载 c.普通函数重载 注意: a.我们主要使用的方式主要是用:类成员函数和友元函数来实现运算符的重载. b.其实用普通函数理论 ...
- C++中输出流运算符的重载
cout是ostream类的对象,cin是istream类的对象. 我们平时用的cout<<就相当于cout.operator<<(...).也就是说正常使用(不对operat ...
- C++中,用类和重载运算符写高精模板
先放代码: #include<iostream> #include<cstdio> #include<cstring> using namespace std; s ...
- C++中的运算符重载练习题
1.RMB类 要求: 定义一个RMB类 Money,包含元.角.分三个数据成员,友元函数重载运算符‘+’(加) 和 ‘-’(减),实现货币的加减运算 例如: 请输入元.角 分: ...
- 结构体作为map的key或放入set中,需要重载<运算符
结构体作为map的key或放入set中,需要重载<运算符,如下: typedef struct tagRoadKey{ int m_i32Type; int m_i32Scale; ...
随机推荐
- 1035 插入与归并 (25 分)C语言
根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭 ...
- 能快速理解Java_集合类_的文章
目录 @ 这篇文章是我学习完Java集合类做的笔记和总结,如果你想认真细读这篇文章,请做好受虐的准备(建议电脑看),因为这篇文章有点长,ヽ(ー_ー)ノ. 如果在看我这篇文章过程中,发现了错误,望指点. ...
- 【JavaWeb学习】过滤器Filter
一.简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静 ...
- opencv利用svm训练
]]]]]])rand2 = np.array([[]]]]]])label = np.array([[]]]]]]]]]]])data = np.vstack((rand1]]])pt_data = ...
- TensorFlow——tf.contrib.layers库中的相关API
在TensorFlow中封装好了一个高级库,tf.contrib.layers库封装了很多的函数,使用这个高级库来开发将会提高效率,卷积函数使用tf.contrib.layers.conv2d,池化函 ...
- C++ string 常用函数
C++ String常用函数 一,类型别名 size_type 无符号整型 iterator 迭代器类型 const_iterator 只读迭代器 reverse_iterator 逆序迭代器 con ...
- Spring Boot2 系列教程 (四) | 集成 Swagger2 构建强大的 RESTful API 文档
前言 快过年了,不知道你们啥时候放年假,忙不忙.反正我是挺闲的,所以有时间写 blog.今天给你们带来 SpringBoot 集成 Swagger2 的教程. 什么是 Swagger2 Swagger ...
- 架构师JavaScript 的对象继承方式,有几种程序写法?
架构师JavaScript 的对象继承方式,有几种程序写法? 一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数, ...
- vue+jest+vue-test-utils 单元测试
jest是Facebook的一套开源的JavaScript测试框架,它集成了快照测试.断言.mock以及覆盖率报告等功能,很全面而且基本不需要太多的配置便可使用Vue-Test-Util ...
- 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》-总结
一.什么是业务中台 概念来自于阿里,介于前台和后台(此后台指的是云计算.数据库.消息队列.缓存等基础服务) 采用共享式架构设计解决以往烟囱式架构设计的资源浪费.重复造轮.试错成本高的问题 阿里的中 ...