我以前从未见过它。我认为这是“::sample”的拼写错误,但是当我看到它实际编译时我很困惑。任何人都可以帮我找出来吗?我不认为这是一个goto
标签。
void f() {
class: sample {
// there were some members declared here
} x;
}
它是一个未命名的类,冒号表示它私有地继承自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
PS:我改成class
可struct
访问性的原因!
那是一个无名的班级。
您可以使用它们来代替 pre-C++11 中的本地函数:
int main() {
struct {
int operator() (int i) const {
return 42;
}
} nice;
nice(0xbeef);
}
后跟的冒号 sample
只是表示从sample
使用默认继承派生而来。(对于结构:公共,对于类:私有)