我以前从未见过它。我认为这是“:: sample”的拼写错误,但是当我看到它实际编译时我很困惑。有人能帮我找到吗?我不认为这是goto
标签。
void f() {
class: sample {
// there were some members declared here
} x;
}
答案 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
派生。 (对于结构:公共,类:私有)