use*_*379 26 c++ object static-members
class base {
public:
base a;
};
Run Code Online (Sandbox Code Playgroud)
它给出了编译错误.
class base {
public:
static base a;
};
Run Code Online (Sandbox Code Playgroud)
而这段代码不会给出编译错误
Luc*_*ore 41
因为static类成员没有存储在类实例中,所以这就是为什么它static会起作用.
将对象存储在同一类型的另一个对象中会破坏运行时 - 无限大小,对吧?
会有什么sizeof回报?对象的大小需要由编译器知道,但由于它包含相同类型的对象,因此没有意义.
我猜这个错误是这样的
字段'a'具有不完整的类型
这是因为当不是静态时,A直到结束括号才完全定义类.另一方面,静态成员变量在完全定义类之后需要单独的定义步骤,这就是它们工作的原因.
搜索声明和定义之间的区别以获得更详尽的解释.