我从没看过 我以为这是“ :: 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可访问性的理由!