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. ...
随机推荐
- 在Eclipse下远程调试Beagleboneblack
安装调试器 1. gdbserver 2. gdb-multiarch 建立工程 新建一个cpp工程,ToolChains选择Cross GCC 这里使用的是arm-linux-gnueabihf-的 ...
- JavaEE基础(01):Servlet实现方式,生命周期执行...
一.Servlet简介Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容.使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库 ...
- Servlet&JSP复习笔记 01
1. Servlet 含义:服务器端的小程序,它只是服务器中的一部分. Servlet Little 标准:Sun公司制定的一种用来扩展Web服务器功能的组件规范. a. 扩展web服务器功能:扩展w ...
- 如何在linux中运行sql文件
1.在linux中进入sql命令行 mysql -u root -p 输入密码 2.假设home下面有a.sql文件 先得use databasename,要不会报错 “No Database S ...
- mysql创建某个数据库中的某张表 只读用户
1.创建用户,并授权SELECT查询权限,授权远程访问权限,注意,命令中username/password指用户名密码,请自己指定.若要限制仅指定IP可以使用此用户访问Mysql,将%改为具IP即可, ...
- HDU-1828 Picture(扫描线 求矩形并的周长)
http://acm.hdu.edu.cn/showproblem.php?pid=1828 Time Limit: 6000/2000 MS (Java/Others) Memory Limi ...
- L3-016 二叉搜索树的结构 (30 分)
二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值:若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值:它的左.右子树也分别 ...
- VS各种错误集成总结,持续更新
1.error C4996: 'GetVersionExW': 被声明为已否决 解决办法:工程 -- 配置属性 --C/ C++ -- 常规 -- SDL check 关掉 2.fatal error ...
- Web Service概述 及 应用案例
Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用 ...
- Resin介绍及其使用配置
Resin介绍及其使用配置一 Resin是一个提供高性能的,支持 Java/PHP 的应用服务器.目前有两个版本:一个是GPL下的开源版本,提供给一些爱好者.开发人员和低流量网站使用:一种是收费的专业 ...