"class:"在C++中意味着什么?

Joh*_*itb 78 c++ class colon

我以前从未见过它.我认为这是":: sample"的拼写错误,但是当我看到它实际编译时我很困惑.有人能帮我找到吗?我不认为这是一个goto标签.

void f() {
  class: sample {
    // there were some members declared here
  } x;
}
Run Code Online (Sandbox Code Playgroud)

Ale*_* C. 80

它是一个未命名的类,冒号意味着它私下继承sample.看到它

class Foo : private sample
{
    // ...
};

Foo x;
Run Code Online (Sandbox Code Playgroud)

  • 哇,这很有意思.看来你是对的,范围内有一个类"sample",类成员访问基类.现在我明白了. (9认同)
  • @Johannes:这是一种非常有限的方法,因为未命名的类不能有非默认的构造函数或析构函数,也不能用作模板(因为它是本地类).我很好奇这个结构的用途是什么.我所知道的本地类的唯一用例是"类型擦除习语"(即返回`sample*`,但`sample`是一个不可访问的基类). (2认同)
  • 它不是一个未命名的类实例;这是一个未命名的类。 (2认同)

Naw*_*waz 21

我认为这是定义一个源自的无名类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;
}
Run Code Online (Sandbox Code Playgroud)

ideone上的示例代码:http://www.ideone.com/6Mj8x

PS:因为无障碍原因我改为classstruct!