我从没看过 我以为这是“ :: sample”的错字,但是当我看到它确实可以编译时,我感到非常困惑。谁能帮我找出来吗?我不认为这是一个goto
标签。
void f() {
class: sample {
// there were some members declared here
} x;
}
我从没看过 我以为这是“ :: sample”的错字,但是当我看到它确实可以编译时,我感到非常困惑。谁能帮我找出来吗?我不认为这是一个goto
标签。
void f() {
class: sample {
// there were some members declared here
} x;
}
sample
吗?
goto
标签吗?正确,goto
顶部class
!
Answers:
这是一个未命名的类,冒号表示它是从私有继承的sample
。看到像
class Foo : private sample
{
// ...
};
Foo x;
sample*
,但sample
此处是不可访问的基类)。
我认为这是定义一个源自的未命名类sample
。并且x
是该未命名类的变量。
struct sample{ int i;};
sample f()
{
struct : sample
{
// there were some members declared here
} x;
x.i = 10;
return x;
}
int main()
{
sample s = f();
cout << s.i << endl;
return 0;
}
ideone上的示例代码:http : //www.ideone.com/6Mj8x
PS:我改变了class
对struct
可访问性的理由!