c++ 左移运算符重载(还需要再看看

#include<iostream>
using namespace std;
#include <string>
#include <ostream>
class Person {
	friend ostream& operator<<(ostream& out, Person& p);//代表左移运算符可以自由使用person的private

public:

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

	//成员函数 实现不了  p << cout 不是我们想要的效果 所以只能用全局函数实现左移重载
	//类内成员函数可以少传一个参数,也必须少传一个参数,这样传进去的相当于只有第一个元素。
	//void operator<<(Person& p){
	//}
	//如果是如下的情况 就相当于 p.operator<<cout --->p << cout 和cout <<p不一样
	//void operator<<(cout) {
	//}

private:
	int m_A;
	int m_B;
};

//全局函数实现左移重载
//ostream对象只能有一个
ostream& operator<<(ostream& out, Person& p) {//因为cout是ostream类型的 所以:
	out << "a:" << p.m_A << " b:" << p.m_B;
	return out;
}


void test() {

	Person p1(10, 20);

	cout << p1 << "hello world" << endl; //链式编程
	//相当于cout 引用了<< 后面跟一个引入的元素 这之后<<是正常的定义的 不是重载的
}

int main() {
	test();
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值