C ++中的“class:”是什么意思?

我从来没有见过它。 我认为这是一个“样本”的错字,但是当我看到它实际编译时,我感到非常困惑。 任何人都可以帮我找出答案吗? 我不认为这是一个goto标签。

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

这是一个未命名的类,冒号意味着它从sample私下inheritance。 看到它像

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

我认为这是定义一个来自sample 的未命名类 。 而x是这个未命名类的variables。

 struct sample{ int i;}; sample f() { struct : sample { // there were some members declared here } x; xi = 10; return x; } int main() { sample s = f(); cout << si << endl; return 0; } 

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

PS:我改变了classstruct的可访问性的原因!

这是一个未命名的类。

你可以使用它们来替代pre-C ++ 11中的本地函数:

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

后面跟着sample的冒号简单地意味着使用默认inheritance从sample派生 。 (对于结构:公共,对于类:私有)