C++:朋友作为课堂上的主要人物

RDX*_*RDX -3 c++ constructor class friend

主要功能可以在C++中成为好友功能吗?

 #include "stdafx.h"
#include <iostream>
using namespace std;
class A {
public:
    A():i(10){}
private:
    int i;
    friend int main();
};

int main()
{
    A obj;
    cout<<obj.i;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*igt 5

标准的3.6.1(来自n3936草案的措辞,但在C++ 03中是相同的)说:

该功能main不得在程序中使用.

这条规则的确切含义尚不清楚.标准正式定义了odr-used相关术语的语义,但并未简单地使用.

为安全起见,假设此规则意味着"该函数main不应在friend声明中命名".


有趣的是,虽然这条规则的措辞与C++ 03相同,但在那个版本中,我们现在所知道的odr-used还没有被重命名,而这个规则显然是指这个概念.我想知道在从使用odr-used的重命名过程中是否忽略了这一点.如果在这里故意不使用新术语,那么该决定的理由可能会阐明禁止使用的确切用途.


Shafik发现重命名发生在N3214,并且这条规则故意不会改为使用odr,尽管它没有解释原因.