C++里的运算符重载
2015-08-19 23:14
405 查看
为了更方便的操作类,可以对类进行一些操作符的重载。具体代码如下:
其中,因为输入输出函数并不是类的成员函数,所以要将其定义为友元函数;而在输入过程中,类的值会改变,所以输入函数的第二个参数不能为const。
operator ++()类似于++i,将变量自加后返回变量;operator ++(int)类似于i++,将变量自加后返回自加钱的值,所以声明了一个中间变量,让它存储自加前的值,进行返回。
#include <iostream> using namespace std; class Num { public: Num(){} Num(int a):val(a){} ~Num(){} Num operator +(const Num& n); Num& operator =(const Num& n); Num& operator ++(); Num operator ++(int); friend istream& operator >>(istream& is , Num& n); friend ostream& operator <<(ostream& os , const Num& n); private: int val; }; Num Num::operator +(const Num& n) { Num ret; ret.val = val + n.val; return ret; } Num& Num::operator =(const Num& n) { val = n.val; return *this; } ostream& operator <<(ostream& os , const Num& n) { os<<n.val; return os; } istream& operator >>(istream& is , Num& n) { is>>n.val; return is; } Num& Num::operator ++() { ++val; return *this; } Num Num::operator ++(int) { // Num tmp(*this); Num tmp = *this; ++*this; return tmp; } int main() { Num n1(7); Num n2(3); Num n3; n3 = n1 + n2; cout<<n3<<endl; cout<<++n3<<endl; cout<<n3++<<endl; cout<<n3<<endl; Num n4; cin>>n4; cout<<n4<<endl; return 0; }
其中,因为输入输出函数并不是类的成员函数,所以要将其定义为友元函数;而在输入过程中,类的值会改变,所以输入函数的第二个参数不能为const。
operator ++()类似于++i,将变量自加后返回变量;operator ++(int)类似于i++,将变量自加后返回自加钱的值,所以声明了一个中间变量,让它存储自加前的值,进行返回。
相关文章推荐
- C++对象模型——Template中的名称决议方式 (第七章)
- C语言:内存地址分析 & sizeof和strlen用法总结
- C++11 第二章
- 最短路径弗洛伊德算法C语言实现__Floyd
- C++: 整型转字符串
- C语言不通过第三个变量交换a、b两数数值的技巧
- C语言二进制输出
- 03==C语言(运算符,基本数据类型)
- C语言速度优化之指针赋值与if判断
- C++中的智能指针
- C++ Primer Plus 第一章 预备知识
- mysql C语言API接口及实例
- 关于c++派生类构造函数的思考
- 深度优先算法:《啊哈!算法》一书中第四章“解救小哈”例子的 C++ 语言实现
- C语言中,二维数组中,p+1与*(p+1)的区别
- C语言字符串库函数的实现也是笔试题常考的题目,以下代码没有严格测试,只是简单的实现:
- OC中定义了一个结构体(struct),设置结构体的值
- 嵌入式SQL应用(C语言)
- C文件读写函数介绍
- malloc/free函数