我以前从来没有见过它。我以为它是“::sample”的拼写错误,但是当我看到它实际上编译时,我非常困惑。有人能帮我找出答案吗?我不认为它是一个goto标签。
goto
void f() { class: sample { // there were some members declared here } x; }
9udxz4iz1#
它是一个未命名的类,冒号表示它从sample私有继承。
sample
class Foo : private sample { // ... }; Foo x;
igetnqfo2#
我认为这是定义了一个未命名的类,从sample派生而来,而x是这个未命名类的变量。
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/6Mj8xPS:我把class改成struct是为了方便访问!
class
struct
lbsnaicq3#
那是一个未命名的类。例如,你可以用它们来代替C++11之前的本地函数:
int main() { struct { int operator() (int i) const { return 42; } } nice; nice(0xbeef); }
冒号后面跟sample表示 * 使用默认继承从sample派生 *。(对于结构体:公共,对于类:私人)
3条答案
按热度按时间9udxz4iz1#
它是一个未命名的类,冒号表示它从
sample
私有继承。igetnqfo2#
我认为这是定义了一个未命名的类,从
sample
派生而来,而x
是这个未命名类的变量。ideone上的示例代码:http://www.ideone.com/6Mj8x
PS:我把
class
改成struct
是为了方便访问!lbsnaicq3#
那是一个未命名的类。
例如,你可以用它们来代替C++11之前的本地函数:
冒号后面跟
sample
表示 * 使用默认继承从sample
派生 *。(对于结构体:公共,对于类:私人)