今天我查看了boost :: asio :: ip :: address的头文件源代码,发现了以下几行:
class address { // I removed some irrelevant lines here... public: /// Compare addresses for ordering. friend bool operator>=(const address& a1,const address& a2) { return !(a1 < a2); } };
现在我知道朋友的用途是什么,但我从未在类定义中看到它后面的定义.
所以我的问题是,这个朋友的声明是做什么的?在我看来,运算符> =不是这里的方法,但是也没有静态关键字.
在这种特殊情况下,朋友会替换静态吗?
解决方法
是的,不是.它不会替换static,因为在调用运算符时不需要限定名称.它有点像你不需要一个类实例来调用它.
就像在课堂外宣布运算符一样:
class address { // I removed some irrelevant lines here... public: /// Compare addresses for ordering. friend bool operator>=(const address& a1,const address& a2); }; inline bool operator>=(const address& a1,const address& a2) { return !(a1 < a2); }
您可以从类中访问私有和受保护的方法.
考虑在类中重载流操作符,可以应用相同的技术.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。