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

时间:2011-01-17 11:53:25

标签: c++ class colon

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

void f() {
  class: sample {
    // there were some members declared here
  } x;
}

3 个答案:

答案 0 :(得分:80)

它是一个未命名的类,冒号意味着它从sample私下继承。看得像

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

Foo x;

答案 1 :(得分: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;
}

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

PS:出于可访问性原因,我将class更改为struct

答案 2 :(得分:1)

这是一个未命名的班级。

您可以使用它们,例如替换pre-C ++ 11中的本地函数:

int main() {
    struct {
        int operator() (int i) const {                 
            return 42;
        }
    } nice;

    nice(0xbeef);
}

冒号后跟sample只意味着使用默认继承sample派生。 (对于结构:公共,类:私有)