C++程序设计--运算符重载
目录
1, 运算符重载
2, 赋值运算符的重载
3, 流插入运算符重载
4,自加/自减运算符的重载
运算符重载
作用:对抽象数据类型也能够直接使用C++提供的运算符。
使得程序更简洁。
代码更容易理解。
运算符重载的实质是函数重载
|
|
运算符可以重载成普通函数,也能重载为成员函数。前者的参数个数就是对应操作符的目数,而成员函数则是目数减一。
赋值运算符的重载
1,赋值运算符两边的类型可以不匹配。
如:将一个Int类型的变量赋值给一个Complex对象。
2,对一个自己写的类想要进行 = 赋值时,需要重载赋值运算符”=”
3,赋值运算符“=”只能重载为成员函数
一般来说,赋值运算符的重载的返回值是该对象本身的引用,来满足=的意义。
流插入运算符重载
cout本身就是ostream的一个对象,而cout<<其实是在ostream类中对<<进行了重载。
我们如果想通过<< >>来实现自己对应的对象的输入和输出,则可以自己来重载这两个运算符。
一般定义为全局函数,因为iostream类C++已经写好了。
比如实现对复数类的输入输出:
|
|
自加/自减运算符的重载
前置和后置有区别,
前置是一元运算符,后置是二元运算符。多出来的一个参数具体是啥无意义,只是为了标记这是一个后置运算符。
|
|
注意:上面的demo中int作为一个类型强制转换运算符被重载,Demo s; (int)s等效于s.int()。
类型强制转换运算符被重载时,不能写返回值类型,实际上其返回值就是类型转换所代表的类型。
Tips:
1,C++不允许定义新的运算符。
2,重载后的运算符应该符合日常习惯。
3,重载运算符不能改变运算符的优先级。
4,以下运算符不能被重载。”.” “*” “::” “?”,sizeof
5,重载运算符(), [], ->或者赋值运算符时,只能被声明为类的成员函数。
C++程序设计--运算符重载的更多相关文章
- sdut 面向对象程序设计上机练习十(运算符重载)
面向对象程序设计上机练习十(运算符重载) Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 定义一个复数类Complex,重载运算符"+" ...
- 04737_C++程序设计_第9章_运算符重载及流类库
例9.1 完整实现str类的例子. #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> ...
- C++程序设计方法3:数组下标运算符重载
数组下标运算符重载 函数声明形式 返回类型operator[](参数): 如果返回类型是引用,则数组运算符调用可以出现在等式的左边,接受赋值,即: Obj[index] = value; 如果返回类型 ...
- 新标准C++程序设计读书笔记_运算符重载
形式 返回值类型 operator 运算符(形参表) { …… } 运算符重载 (1)运算符重载的实质是函数重载(2)可以重载为普通函数,也可以重载为成员函数 class Complex { publ ...
- 网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符
第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...
- C++学习之路—运算符重载(二)运算符重载作为类的成员函数和友元函数
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 对运算符重载的函数有两种处理方式:(1)把运算符 ...
- C++学习之路—运算符重载(一)概念、方法及规则
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 1 什么是运算符重载 先来说下什么是重载吧 ...
- c++入门之—运算符重载和友元函数
运算符重载的意义是:将常见的运算符重载出其他的含义:比如将*重载出指针的含义,将<<与cout联合使用重载出输出的含义,但需要认识到的问题是:运算符的重载:本质仍然是成员函数,即你可以认为 ...
- C/C++对Lu系统内置动态对象进行运算符重载
欢迎访问Lu程序设计 C/C++对Lu系统内置动态对象进行运算符重载 1 说明 要演示本文的例子,你必须下载Lu32脚本系统.本文的例子需要lu32.dll.lu32.lib.C格式的头文件lu32. ...
随机推荐
- Microsoft COCO 数据集
本篇博客主要以介绍MS COCO数据集为目标,分为3个部分:COCO介绍,数据集分类和COCO展示. 本人主要下载了其2014年版本的数据,一共有20G左右的图片和500M左右的标签文件.标签文件标记 ...
- 【lca+输入】Attack on Alpha-Zet
Attack on Alpha-Zet 题目描述 Space pirate Captain Krys has recently acquired a map of the artificial and ...
- python运算符的优先级顺序
最近开始学习python,听大家说python很强大,可以作为脚本语言,支持面向对象.面向过程编程,兼具编译性和解释性的一门动态语言.作为一名程序员有必要掌握这一门强大的"胶水语言" ...
- 面试常见二叉树算法题集锦-Java实现
1.求二叉树的深度或者说最大深度 /* ***1.求二叉树的深度或者说最大深度 */ public static int maxDepth(TreeNode root){ if(root==null) ...
- (转)Navicat Premium 12.1.8.0安装与激活
http://www.mamicode.com/info-detail-2493067.html
- npm 切换成淘宝镜像
npm install nrm -g nrm use taobao
- STOER-WAGNER算法求解无向图最大流最小割(无指定源点汇点)
学习粗:https://blog.csdn.net/ddelphine/article/details/77935670 模板题:http://poj.org/problem?id=2914 #inc ...
- 关于Java中注解的总结
注解用来给类声明附加额外信息,可以标注在类.字段.方法等上面,编译器.JVM以及开发人员等都可以通过反射拿到注解信息,进而做一些相关处理 Java中注解的知识结构图 常用注解 @Override ...
- webpack4的迁移
引用于https://www.jianshu.com/p/7ae252f27f09 感觉是突然之间,webpack4的消息就满天飞了,听说打包速度提高了很多,还有最大的噱头是实现了零配置,leader ...
- 71)PHP,使用cookie的语法问题
1) 为啥用数组的形式,就是这样好区分,你看都是跟student相关的东西, (2)