操作符重载(day07)
二十 操作符重载
eg:复数x+yi +4i
(+2i) + (+4i) = +6i
双目操作符(L # R)
1.1 运算类的双目操作符:+ - * /
-->左右操作数可以是左值也可以是右值
-->表达式结果是右值
)成员函数形式
L#R的表达式会被编译器自动处理为L.operator#(R)的成员函数调用,该函数的返回值即为表达式的值。 )全局函数形式
L#R的表达式会被编译器自动处理为operator#(L,R)的全局函数调用,该函数的返回值即为表达式的值。 注:通过friend关键字,可以把一个全局函数声明为某个类的友元,友元函数可以访问类中的任何成员。 1.2 赋值类的双目操作符
-->左操作数是左值(不能是常量),右操作数可以是左值也可以是右值
-->表达式结果是左值,就是左操作的自身
)成员函数形式:
L # R --》L.operator#(R);
)全局函数形式:
L # R --》operator#(L,R);
--------------------
单目操作符重载 #O
2.1 计算类单目操作符:-(取负) ~ !
-->操作数可以左值也可以值右值
-->表达式结果是一个右值
)成员函数形式
#O --》O.operator#();
)全局函数形式
#O --》operator#(O); 2.2 自增减单目操作符: ++/--
)前缀自增减
--》操作数是左值
--》表达式结果就是操作数自身,也是左值
成员函数形式:
#O--> O.operator#()
全局函数形式:
#O--> operator#(O) )后缀自增减
--》操作数是左值
--》表达式结果是自增减之前的副本(右值)
成员函数形式:
O#--> O.operator#(int/*哑元*/)
全局函数形式:
O#--> operator#(O,int/*哑元*/) ---------------------------
插入和提取操作符: << >>
功能:实现自定义类型的输入和输出的功能
注:只能用全局函数形式
#include <iostream>
ostream cout;
istream cin;
cout << a;//operator<<(cout,a);
friend ostream& operator<<(
ostream& os,const RIGHT& right){...} cin >> a;//operator>>(cin,a);
friend istream& operator>>(
istream& is,RIGHT& right);
==========================================
练习:实现3x3矩阵类,支持如下操作符重载
<< + - += -= -(取负) ++(前后) --(前后)
要求:除了<<,都使用成员函数形式
class M33{
public:
M33(void){
for(int i=;i<;i++)
for(int j=;j<;j++)
m_a[i][j] = ;
}
M33(int a[][]){
for(int i=;i<;i++)
for(int j=;j<;j++)
m_a[i][j] = a[i][j];
}
const M33 operator+(const M33& m)const{
int a[][]={};
for(int i=;i<;i++)
for(int j=;j<;j++)
a[i][j]= m_a[i][j] + m.m_a[i][j];
M33 res(a);
return res;
} private:
int m_a[][];
};
int main(void)
{
int a1[][] = {,,,,,,,,};
int a2[][] = {,,,,,,,,};
M33 m1(a1);
M33 m2(a2);
}
m1 + m2 + = -------
m1 - m2
- - -
- = new/delete 操作符
static void* operator new(size_t size){...}
static void operator delete(void* p){...} 函数操作符"()" 下标操作符"[]"
操作符重载(day07)的更多相关文章
- c++ 操作符重载和友元
操作符重载(operator overloading)是C++中的一种多态,C++允许用户自定义函数名称相同但参数列表不同的函数,这被称为函数重载或函数多态.操作符重载函数的格式一般为: operat ...
- paip.操作符重载的缺失 Java 的一个大缺点
paip.操作符重载的缺失 Java 的一个大缺点 #----操作符重载的作用 1.提升用户体验 操作符重载..可以让代码更加自然.... 2.轻松实现代码代码移植 例如 java代码会直接移植到 ...
- C#中如何利用操作符重载和转换操作符
操作符重载 有的编程语言允许一个类型定义操作符应该如何操作类型的实例,比如string类型和int类型都重载了(==)和(+)等操作符,当编译器发现两个int类型的实例使用+操作符的时候,编译器会生成 ...
- 操作符重载.xml
pre{ line-height:1; color:#1e1e1e; background-color:#d2d2d2; font-size:16px;}.sysFunc{color:#627cf6; ...
- [置顶] operator overloading(操作符重载,运算符重载)运算符重载,浅拷贝(logical copy) ,vs, 深拷贝(physical copy)
operator overloading(操作符重载,运算符重载) 所谓重载就是重新赋予新的意义,之前我们已经学过函数重载,函数重载的要求是函数名相同,函数的参数列表不同(个数或者参数类型).操作符重 ...
- C++一些注意点之操作符重载
重载操作符需要注意 (1)重载操作符必须具有一个类类型操作数.不能重载内建类型的操作符. operator +(int,int);//这个是错误的,都为内建类型 operator +(int,clas ...
- C++基础学习笔记----第十三课(操作符重载-下)
本节主要讲使用成员函数重载操作符,包括[],=,(),->四种操作符的重载以及&&和||的问题. 类的成员函数进行操作符重载 基本概念 类的成员函数也可以进行操作符的重载.类的普 ...
- 再议Swift操作符重载
今天我们来谈一谈Swift中的操作 符重载,这一功能非常实用,但是也相当有风险.正所谓“能力越大责任越大”,这句话用来形容操作符重载最合适不过了.它可以令你的代码更加简洁,也可以让 一个函数调用变得又 ...
- C++中的操作符重载
一.什么是操作符重载 操作符重载可以分为两部分:“操作符”和“重载”.说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载.运算符重载和函数重载的不同之处在于操作符重载 ...
随机推荐
- PHP array_chunk()
定义和用法 array_chunk() 函数把一个数组分割为新的数组块. 其中每个数组的长度由参数 size 决定. 可选参数 preserve_key 是一个布尔值,它指定新数组是否使用原数组相同的 ...
- iOS开发一行代码系列:一行搞定数据库
原理 iOS 和 SQL的相应关系 Model类结构 => SQL表结构 Model实例 => SQL表中的一行 Model实例的属性 => S ...
- IntelliJ IDEA 问题总结之二(待补充) —— 快捷键、主题样式、导出jar、sqlite
随着对idea的使用,问题越来越多,開始第二篇问题总结. 1.快捷键. 用惯了eclipse再用idea后,快捷键就是一个大问题. 并且网上idea的快捷键有非常多版本号.不知道是不是老版本号和新版本 ...
- 《Spring技术内幕》笔记-第二章 IoC容器的实现
简单介绍 1,在Spring中,SpringIoC提供了一个主要的JavaBean容器.通过IoC模式管理依赖关系.并通过依赖注入和AOP切面增强了为JavaBean这样子的POJO提供事务管理,生命 ...
- 571B. Minimization(Codeforces Round #317)
B. Minimization time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- 运用smali自己主动注入技术分析android应用程序行为
如今android开发人员社区里,除了app开发外,还有非常多周边的工具类产品,比方安全.性能等,app产品 已经出现了巨无霸,可是工具类的产品.眼下还没有出现规模比較大的公司,大部分还处于创业阶段, ...
- CentOS7 iso ks
- 第11课 Git GUI程序的基本功能
11-1 Git GUI程序的基本操作
- HDU1560 DNA sequence
题目: The twenty-first century is a biology-technology developing century. We know that a gene is made ...
- POJ 1659 Havel-Hakimi定理
关于题意和Havel-Hakimi定理,可以看看http://blog.csdn.net/wangjian8006/article/details/7974845 讲得挺好的. 我就直接粘过来了 [ ...