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:我改变了class
为struct
的可访问性的原因!
这是一个未命名的类。
你可以使用它们来替代pre-C ++ 11中的本地函数:
int main() { struct { int operator() (int i) const { return 42; } } nice; nice(0xbeef); }
后面跟着sample
的冒号简单地意味着使用默认inheritance从sample
派生 。 (对于结构:公共,对于类:私有)