编程语言
首页 > 编程语言> > C++之运算符重载

C++之运算符重载

作者:互联网

1 运算符重载

运算符    +    -    *    /    ++    --    %    &&    ->    >    < 等
image

class Person{

public :
	Person(){}
	Person(int a ,int b):m_A(a),m_B(b){}

	/*Person operator+(Person &p){
		Person temp;
		temp.m_A = this->m_A + p.m_A ;
		temp.m_B = this->m_B + p.m_B ;
		return temp;
	}*/

	int m_A;
	int m_B;
};
// 利用全局函数 进行+号运算符的重载
Person operator+(Person &p1, Person &p2) // 二元的运算符重载
{
	Person temp;
	temp.m_A = p1.m_A + p2.m_A;
	temp.m_B = p1.m_B + p2.m_B;
	return temp;
}
void test01(){
	Person p1(10,10);
	Person p2(15,24);
	Person p3 = p1+p2;
	cout << "p3的m_A和p3的m_B" << p3.m_A <<"    "<< p3.m_B << endl;
}

2 左移运算符符号重载

不要滥用运算符重载。重载左移运算符不能写在类里,不能作为成员函数。
cout << p1;
因为是cout调用的,不是其他对象调用的。

#include <iostream>
using namespace std; 

class Person{
public :
	Person(){}

	Person(int a , int b){
		this ->m_A = a;
		this -> m_B = b;
	}

	/*void operator<<(){   // 重载左移运算符不能写到成员函数中

	}*/
	int m_A;
	int m_B;
};

ostream & operator<<(ostream & cout,Person & p)
{	// 第1个参数cout ,第2个参数p1
	cout << p.m_A <<  p.m_B ;
	return cout ;
}

void test01(){
	Person p1(10,10);
	 /*cout << p1.m_A << "&" << p1.m_B <<endl;*/
	// 现在要求是直接使用左移运算符输出p1
	// cout << p1 << endl; // 需要重载左移运算符
	cout << p1 << endl;
}

标签:p2,temp,int,C++,运算符,Person,重载
来源: https://www.cnblogs.com/lofly/p/16589987.html