将cout重载为非好友助手运算符
Overloading cout as a Non Friend Helper Operator
我有一个赋值的指令,它让我在这里经历了一个循环。我需要重载插入运算符来打印对象数据成员。但是,它规定重载器必须是非好友助手运算符。
如果是这样的话,如果它不是"朋友",它怎么能访问私人数据成员?如果这是可能的,我为什么要避免使用"朋友"?
以下是它逐字逐句地说的:
- 将存储的字符串插入左ostream操作数的辅助非友元运算符
这个操作符在字符串前面加上插入的数字,然后递增这个数字
我对C++有点陌生,所以我真的很感激你的帮助。
如果不是朋友,则需要使用对象的公共接口(ergo,您需要编写对象的公共界面以包含插入运算符所需的访问权限)。
例如,你可以做这样的事情:
class thing {
std::string name;
public:
std::string get_name() const { return name; }
// ...
};
std::ostream &operator<<(std::ostream &os, thing const &t) {
return os << t.get_name();
}
请注意,我绝对不是推荐这是一种好的做法——相反,我认为通常是插入运算符成为朋友的更好主意。但是,如果你在一个班里,你被禁止以正确的方式做事,你就做你必须做的…
相关文章:
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 消除好友和成员二进制运算符的歧义
- C++:不能使运算符<<成为模板嵌套类的好友
- 好友与成员运算符重载的优先级
- 与好友运算符接口<<:为什么不能链接?
- 重载运算符>类模板中的好友
- 运算符<<不能使用其好友数组的 IT 成员
- C++:制作模板运算符 = 重载好友
- 运算符覆盖 - 何时使用好友
- C++模板好友运算符与附加模板参数
- 重载运算符<<用于模板类.即使使用好友关键字也无法获得私人会员
- 使用好友和成员函数的运算符重载
- 如何使用好友运算符存储字符串
- 类内好友运算符似乎不参与重载解析
- 为什么我不能在"好友"运算符中使用"私人"字段?
- 将cout重载为非好友助手运算符
- 好友运算符<<过载问题,