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

我以前从没见过。我以为这是“ : : sample”的打印错误,但当我看到它实际上是编译的时候,我感到非常困惑。有人能帮我查一下吗?我觉得这不是 goto的标签。

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

它是一个未命名的类,冒号表示它从 sample私有继承

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


Foo x;

我认为这是定义从 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

附注: 我把 class改成 struct是为了方便访问!

那是一个未命名的类。

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

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


nice(0xbeef);
}

冒号后面跟着 sample的意思就是 使用默认继承从 sample派生(对于 structs: public,对于 class: private)