/*2021年10月18日20:30:11
* 尽量设置private变量
* 使用友元让全局函数访问里面的私有内容
*
*/
# include<iostream>
using namespace std;
//左移运算符重载
class person
{
void test01();
friend ostream& operator<<(ostream& p, person& x);
public:
person()
{
m_a = 10;
m_b = 10;
}
private:
int m_a;
int m_b;
//void operator<< (ostream cout,)
//在这中间重载左移运算符只能传入一个参数,所以不会使用
};
// 利用成员函数重载左移运算符
// 不会利用 只能利用全局函数重载左移运算符
//成员函数重载<<运算符,因为无法实现cout 在左边
// void operator<< (ostream &cout)
// {
// cout << m_a;
// cout << m_b;
// //如果不知道返回什么先void
// }
ostream& operator<<(ostream &p,person &x)
{
p <<"m_a=" << x.m_a<<endl;
p << "m_b=" << x.m_b<<endl;
return p;
}
//只能有一个cout所以一定要用引用
void test01()
{
int z = 0;
person p;
cout << p<< endl;
//链式变成思想
/*p.operator<<(cout);*///调用person 中的p
/*p << cout;*///就是这么规定的,在全局函数中调用cout
//可以通过调用cout在左边从而使用左移运算符
}
int main(void)
{
test01();
system("pause");```````````````````````````````````````````````````````````````````````````````````````````````
return 0;
}
黑马c++左移运算符重载
最新推荐文章于 2023-09-16 13:18:35 发布