一类的定义如下:如果静态成员未初始化并且成员类型本身是类,该怎么办?
class Singleton {
public:
static Singleton instance_;
private:
Singleton() {
cout << "constructor\n";
}
};
在一个函数:
Singleton instance = Singleton::instance_;
代码可以被编译和被抛出任何错误。如果我这样使用它:
Singleton &instance = Singleton::instance_;
引发链接错误。我想知道为什么第一个案例可以正确编译?我知道构造函数没有被调用。第一种情况下实例的对象状态是什么?第一个案件是否有意义?
点击!如果我定义我的拷贝构造函数而不是使用默认的构造函数,那么代码就不能编译。看起来编译器在优化之后确实忽略了错误。 – CppLucifer