C/C++ 运算符重载、数据类型转换
1.运算符就是“+”、“>>”等符号,对运算符重载实质就是对函数的重载,这样运算符就能在原有基础上增加新功能,不能自己定义新运算符,只能对已有运算符重载,重载运算符后不能改变运算符本身的特性,比如优先级,运算数个数等;
2.运算符重载格式:
函数类型 operator 运算符名称(形参表)
{
//具体操作
}
e.g.complex operator +(complex &c1,complex &c2)
operator是关键字,函数名由operator和运算符共同组成,如”operator +”。
3.不能重载的5个运算符:“.”、“*”、“::”、“sizeof”、“?:”。
4.对运算符重载的函数有两种方式:类成员函数、类友元函数。
类成员函数:complex operator +(complex &c1)
这样就可以直接c1+c2了,相当于是c1.operator+(c2),operator+就是c1的成员函数,因为可以通过this指针访问类的数据成员,所以可以少写一个函数参数,第一个参数必须为本类对象。
类友元函数:complex operator +(complex &c1,complex &c2)
这样c1+c2相当于是operator+(c1,c2)
如果不用友元,则重载的运算符函数无权访问类的私有成员,所以要用友元。
因为友元会破坏类的封装,所以尽量将运算符函数作为类的成员。一般来说,双目运算符为友元,单目和复合运算符为成员函数。
5.数据类型显式转换:
c风格:(int)12.3=12
c++风格:int(12.3)=12
6.构造函数转换数据类型,重载构造函数即可。
7.类型转换函数:
格式:operator 返回类型()//一般是在类内部写的,
{
//实现转换的语句
}
e.g.
class A
{
public:
int a;
A(int x) :a(x) {}
operator int()
{
return a;
}
};
int main()
{
A haha(2);
int b = haha + 3;
A c = haha + 4;
cout<<b<<"\n"<<c.a<<endl;
return 0;
//结果输出5和6
}
作用:将自定义数据类型转换为标准数据类型。
C/C++ 运算符重载、数据类型转换的更多相关文章
- 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换
[源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...
- 简谈-Python的输入、输出、运算符、数据类型转换
输出: 格式化输出: 看到了 % 这样的操作符,这就是Python中格式化输出. 换行输出: 在输出的时候,如果有 \n 那么,此时 \n 后的内容会在另外一行显示 输入: 在python2.7当中, ...
- 算数运算符and数据类型转换
一元(单目)运算符有且只有一个运算参数,二元(双目)运算符有且只有两个运算参数. 二元运算符:+(加).-(减).*(乘)./(求商).%(求余) 一元运算符:+(正),-(负),++(自增),--( ...
- js运算符及数据类型转换(二)
1.一元运算符+.-[将其它类型转化为number类型,相当于调用了Number()函数]var num = +('hello') NaN typeof num->numbernum = + ...
- Java 原始数据类型的计算:运算符重载(Operator Overload)和类型转换(Type Conversion)
原文阅读:<算法(第四版)>第一章 第一节:基础编程模型 有没有在面试的时候被问到:下面这几行代码的执行结果是什么?依据是什么? System.out.println (5/3); Sys ...
- C++学习6-面向对象编程基础(运算符重载、类的派生与继承、命名空间)
运算符重载 重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.重载的运算符是遵循函数重载的选择原则,根据不同类型或不同参数来选择不同的重载运算符. 运 ...
- python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)
一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...
- [Day2]变量、数据类型转换以及运算符
1.变量 变量是内存中装载数据的小盒子,你只能用它来存取数据 2.计算机存储单元 (1)计算机存储设备的最小信息单元叫“位(bit)”,“比特位” (2)8个比特位表示一个数据,是计算机的最小存储单元 ...
随机推荐
- mp3 pcm
mp3 pcm javaMP3转pcm 百度语音识别 - 且学且珍惜 - SegmentFault 思否 https://segmentfault.com/a/1190000013383967
- bzoj2101【Usaco2010 Dec】Treasure Chest 藏宝箱
2101: [Usaco2010 Dec]Treasure Chest 藏宝箱 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 418 Solved: ...
- JavaScript 图片广告自动与手动的切换
1.代码 <html> <head> <script type="text/javascript" src="jquery-1.8.j ...
- BZOJ2049:Cave 洞穴勘测 (LCT入门)
辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好两个洞穴.假如两个洞穴可 ...
- Linux网络协议栈(四)——链路层(2)
2.协议相关2.1.第3层协议的管理在Linux内核中,有两种不同目的的3层协议:(1) ptype_all管理的协议主要用于分析目的,它接收所有到达第3层协议的数据包.(2) ptype ...
- Oracle11g for CentOS6-*
lsnrctl startsqlplus /nologstartup
- ubuntu 怎么格式化U盘?(转载)
转自:http://3168247.blog.51cto.com/3158247/605654 图形的话装一个gparted,找那个/dev/sdb,右击选择格式化,最后点“应用”.命令行:原则是先卸 ...
- 洛谷 P1083 借教室【二分+差分/线段树】
二分mid,然后用1~mid的操作在差分序列上加减,最后把差分序列前缀和起来,看是否有有超过初始r值的 #include<iostream> #include<cstdio> ...
- 把pdf传给kindle
对于不是纯文本的,最好主题不要用convert,虽说用了之后可以转换为大小更合适的字体,但是会破坏本来PDF的格式,变得更加不合适阅读
- python 关闭redis的连接
在python语言中使用redis时,没有找到对应的关闭的方法 try: self.redisconn = StrictRedisCluster(startup_nodes=self.redisNod ...