c – 当你宣布一个朋友然后在一个类中定义它时,这是什么意思?

前端之家收集整理的这篇文章主要介绍了c – 当你宣布一个朋友然后在一个类中定义它时,这是什么意思?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试理解我设法通过反复试验来完成工作的代码段.我理解这个片段的一切,除了为什么当我把“朋友”带出课堂宣言时它不起作用.在这种情况下,我不明白朋友在做什么.
stringstream log;

class logWrapper { friend ostream& operator<<(ostream& os,logWrapper& thislogend) { stringstream &ss = dynamic_cast(os); // This line replaced with printf for clarity // The actual code sends the C style string to a // legacy logging system that only takes C style strings // _log(LOG_ERR,"%s",ss.str().c_str()); printf("%s\n",ss.str().c_str());

ss.str(""); return os; } } logend; int main(void) { log << "This is a test" << logend; }

解决方法

您同时声明并定义了一个使运算符重载的友元函数.

声明为friend的函数可以访问与它们成为友好的类的任何实例的所有私有成员.

这与常规成员函数(显然也可以访问私有成员)不同,因为友元函数不是类的成员 – 它们是独立的函数.

因此,既然您已经在类中定义了独立函数,那么乍一看似乎令人困惑 – 只要记住它根本不是一个成员函数.

原文链接:https://www.f2er.com/c/116866.html

猜你在找的C&C++相关文章