重载输出操作符<<怎样定义为非成员函数?

anison anison 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如果定义为成员函数,不好用

#include <stdafx.h>
#include <iostream>
#include <string>

using namespace std;

class A{
public:
A(int i,const string &s):i(i),s(s){}
// 定义为成员函数时,this指针绑定到左操作数,所以用起来很不习惯哦
ostream& operator<<(ostream &os)
{
os<<i<<s;
return os;
}
private:
int i;
string s;
};

int main(int argc,char* argv[])
{
A a(88,"abc");
a<<cout; // 不习惯...
system("pause");
}



但是定义为非成员函数的话又不能直接访问A类里的private成员,如果定义GetValue之类的public函数也挺麻烦的
不知道怎么处理好
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
anison
C++ 语言 65,214 成员 250,514 内容