C ++内联类定义和对象初始化

时间:2010-03-05 04:29:43

标签: c++ inline definition

我刚刚遇到以下代码:

#include <iostream>

static class Foo
{
public:
    Foo()
    {
        std::cout << "HELLO" << std::endl;
    }

    void foo()
    {
        std::cout << "in foo" << std::endl;
    }

}
    blah;

int main()
{
    std::cout << "exiting" << std::endl;
    blah.foo();
    return 0;
}

我之前没有看到上面定义变量的方法 - 类定义是用变量定义内联完成的。它让我想起了Java中的匿名类。这叫做什么,它是否符合C ++标准?

由于

塔拉斯

1 个答案:

答案 0 :(得分:3)

定义class(或struct,完全等效,除了默认值为public而不是private)并声明其类型的变量(或者指向这样一个变量的指针等) - 在C中没有问题(struct,但正如我已经提到过C ++的class,除了公共与私有之外,与{{1}相同}}和C ++主要保持与(ISO-1989)C的向上兼容性。从未听过它被任何特殊名称调用。