第三十八节 C++ 运算符重载 - 双目运算符

原创 2018年04月16日 17:00:55
#include <iostream>
using namespace std;

/* 运算符重载 -- 双目运算符 a+b, a+=b, a==b, a<b... 
 * 格式: 
 * 1 全局函数或静态成员函数: return_type operator symbol(param1,param2
 * 2 类成员: return_type operator symbol(param1),另一个参数是类的属性 
*/

class  Base {
private:
	unsigned int numBase;
public:
	/*operator a+b 的实现*/
	Base operator + (int input) {
		Base newBase(numBase + input);
		return newBase; 
	}

	/*operator a+=b 的实现*/
	Base& operator += (int input) {
		numBase += input;
		return *this; //this指当前对象的地址,*this指当前对象
	}

	/*operator a+=b 的实现*/
	bool operator == (Base& input) {
		if (numBase == input.numBase)
			return true;
		return false; 
	}
	
	/*访问属性numBase的接口*/
	void getNumBase() {
		cout << "    The Base num = " << numBase << endl;
	}

	Base(unsigned int initNum) : numBase(initNum) { 
		cout << "    Base constructor, init num = " << numBase << endl; }
//	~Base() { cout << "~Base deconstructor" << endl; }

};


int main()
{
	cout << "--- Create new object ---" << endl;
	Base Object(10); //栈上实例化对象
	Object.getNumBase();  //numBase = 10

	cout << "--- a+b ---" << endl;
	Base Object2(Object + 10);
	Object2.getNumBase();  //numBase = 20

	cout << "--- a+=b ---" << endl;
	Object2 += 10;
	Object2.getNumBase();  //numBase = 30

	cout << "--- Create new object" << endl;
	Base Object3(30);

	cout << "--- a==b ---" << endl;
	if (Object2 == Object3)
		cout << "    Object2 == Object3" << endl;

	return 0;
}

output:

--- Create new object ---
    Base constructor, init num = 10
    The Base num = 10
--- a+b ---
    Base constructor, init num = 20
    The Base num = 20
--- a+=b ---
    The Base num = 30
--- Create new object
    Base constructor, init num = 30
--- a==b ---
    Object2 == Object3

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dddd0216/article/details/79963098

【C++】String类中的运算符重载

模块化设计: 头文件: #ifndef operator_operator_h #define operator_operator_h #include #include ...
  • Irean_Lau
  • Irean_Lau
  • 2015-06-07 14:29:47
  • 6587

C++重载的概念

重载 1.同一个标示符在不同的上下文有不同的意义。 比如:洗衣服和洗脸是不同的,或者有不同的含义。 函数重载 1.用同一个函数名定义不同的函数 2.当函数名和不同的参数搭...
  • UESTC_C2_403
  • UESTC_C2_403
  • 2017-06-03 00:11:16
  • 281

C++的算符重载

算符重载的作用是什么?它允许你为类的用户提供一个直觉的接口。 算符重载允许C/C++的运算符在用户定义类型(类)上拥有一个用户定义的意义。重载的算符是函数调用的语法修饰:   class Fred {...
  • onlinewan
  • onlinewan
  • 2007-03-29 09:53:00
  • 534

双目运算符重载

#include class complex{ public: complex(double r=0.0,double i=0.0){ real=r; imag=i; } compl...
  • Sun19910114
  • Sun19910114
  • 2014-08-26 20:51:30
  • 1434

双目运算符的重载

源代码: #include #include using namespace std; class String { public: String(); String(char *str)...
  • hcy2319964421
  • hcy2319964421
  • 2016-03-28 18:45:27
  • 1063

C++ string类

要想使用标准C++中string类,必须要包含 #include // 注意是,不是,带.h的是C语言中的头文件 using namespace std; string类的构造函数: string s...
  • qy724728631
  • qy724728631
  • 2017-11-15 15:01:06
  • 287

C++中string的用法 string字符串的使用方法

string类的常用方法有哪些。string查找替换、分割字符串、比较、截取、类型转换、排序等功能都提供了强大的处理函数,可以代替字符数组来使用。 熟练掌握好string的各种使用方法,能极大的...
  • jiangqin115
  • jiangqin115
  • 2015-09-18 13:51:41
  • 1336

双目运算符重载及友元函数重载

#include using namespace std; class CComplex { private: double real,virt; public: CComplex(double...
  • fatal360
  • fatal360
  • 2013-03-02 13:50:03
  • 470

重载内核(x86)

#include #include #include #include #include #include #include #ifndef MAX_PATH #define MAX_...
  • qq125096885
  • qq125096885
  • 2016-11-17 17:09:55
  • 537
收藏助手
不良信息举报
您举报文章:第三十八节 C++ 运算符重载 - 双目运算符
举报原因:
原因补充:

(最多只允许输入30个字)