文档章节

c++学习心得一元运算符重载

那又怎样
 那又怎样
发布于 2016/04/23 13:11
字数 349
阅读 20
收藏 0

学了c,c++,算是基本入门了吧,以前做的好多笔记由于硬盘坏了,换了硬盘后数据都丢了,只好从c++模版篇开始了,写博客呢不仅可以加深自己的印象,更好的复习学过的知识,也有助于对知识的总结,归纳,写得不好,还请高人指点指点。好了,步入正题吧, c++中可以用直接用"+"实现字符串的连接,比如string a="hello",cout<<a+" world"<<endl;(补充一句,直接定义string a="hello "+"world"这样是错误的) 这就是运算符重载(本质就是函数重载,关键字operator),类中分为友元函数重载和成员函数重载,以简单的坐标类为例把,写法

class Coordinate{
              friend Coordinate &opetator-(coordinate &coor){//需要传入参数(前置)
                   coor.m_iX=-coor.m_iX;   
                    coor.m_iY=-coot.m_iY;
                    return *this;
                    }
             friend Coordinate operator++(Coordinate& c,int){//后置的话operator前不加引用
                    Coordinate c1(c);
                    c.m_iX++;
                   c.m_iY++;
                   return c1;
               }


# include <iostream>
using namespace std;
class Coordinate{
	friend Coordinate& operator++(Coordinate &coor)//友元函数重载(全局)operator前不加引用
	{
		++coor.m_iX;
		++coor.m_iY;
		return coor;
	}

public:
	Coordinate(int x, int y){
	
		m_iX = x;
		m_iY = y;
	}
	int getX(){
		return m_iX;
	}
	int getY(){
		return m_iY;
	}
	
	  
		
	Coordinate &operator-(){   //成员函数重载
		m_iX = -m_iX;
		m_iY = -m_iY;
		return *this;
	}

private:
	int m_iX;
	int m_iY;

};

int main(){

	Coordinate c1(1,1);
	-c1;
	cout << c1.getX() << " " << c1.getY() << endl;
	++c1;
	cout << c1.getX() << " " << c1.getY() << endl;

	system("pause");
	return 0;
}


© 著作权归作者所有

上一篇: 第一篇
下一篇: 第一篇
那又怎样
粉丝 0
博文 2
码字总数 1690
作品 0
芜湖
私信 提问
函数类: unary_function Struct

unaryfunction有一个兄弟是binaryfunction,俩格的区别是一个为了使用一个参数输入的函数对象,另一个适合两个输入参数的函数对象。对于STL不熟悉的人,很难理解为什么好端端的函数对象, 为...

woodo
2014/04/10
78
0
10-C++远征之模板篇-学习笔记

C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 & 静态成员函数 运算符重载: 一切皆有可能 友元函数 函数定义分类: 友元全局函数 例子:...

天涯明月笙
2018/07/24
0
0
C++基础教程之string详情

string 初始化 首先,为了在程序中使用string类型,必须包含头文件 。如: #include 注意:这里不是string.h,string.h是C字符串头文件。 string类是一个模板类,位于名字空间std中,还需要加:...

这个人很懒什么都没留下
2018/09/01
0
0
你可能会感兴趣的 5 个隐藏的 C++ 语言特性

一天又一天,C++ 是越来越火起来了. 作为一种范式覆盖语言,C++的这些隐藏特性基本上就基本上只是对其现有的基础设施的灵活使用. 其实还有更多的这样的设施,而我们也乐于听见读者对此能够有...

oschina
2014/06/18
4.9K
26
cocos2d-js 中的Chipmunk矢量:cp.Vect

对象定义、常量和构造函数 定义: cp.Vect = function(x, y){ this.x = x; this.y = y;} 零向量常量: cp.vzero = cp.v(0,0); 创建新结构体所用的便捷构造函数: cp.v(x, y) 操作运算 v, v1,...

在湖闻樟
2015/08/03
218
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.1K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部