101*_*010 14 c++ program-entry-point friend language-lawyer c++11
我知道main可以成为一个朋友class:
#include <iostream>
class foo {
friend int main();
int i = 4;
};
int main() {
foo obj;
std::cout << obj.i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但是,我觉得虽然这是完全允许的,但它隐藏了许多危险.
main班级朋友方面有什么有用的用途吗?main作为班级的朋友应被视为有害?一般的考虑因素应与其他任何功能相同.
但是,我看到一个可能的危险:
C++标准:
首先在朋友声明中声明的函数具有外部链接
main的链接是实现定义的
因此,如果您的实现期望main()不具有外部链接并且您首先声明main()为朋友(如您的示例中所示),则与标准相矛盾.
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |