C++ 返回静态成员变量c+的引用+;
返回静态成员变量的引用是否有问题? (参考以避免复制成本) 向量接受4个参数(x,y,z,w) h .cppC++ 返回静态成员变量c+的引用+;,c++,reference,static,C++,Reference,Static,返回静态成员变量的引用是否有问题? (参考以避免复制成本) 向量接受4个参数(x,y,z,w) h .cpp 如果POS被声明为static,那么它的生命周期就是程序的生命周期,因此返回对它的引用是安全的。如果POS被声明为static,那么它的生命周期就是程序的生命周期,因此返回对它的引用是安全的。我认为这很好。单例模式的一些实现也做了同样的事情。我认为这很好。对于Singleton模式的一些实现也做了同样的事情。这是类的生命周期,而不是程序的生命周期,不是吗?@buffo类没有生命周期,。对
如果
POS
被声明为static
,那么它的生命周期就是程序的生命周期,因此返回对它的引用是安全的。如果POS
被声明为static
,那么它的生命周期就是程序的生命周期,因此返回对它的引用是安全的。我认为这很好。单例模式的一些实现也做了同样的事情。我认为这很好。对于Singleton模式的一些实现也做了同样的事情。这是类的生命周期,而不是程序的生命周期,不是吗?@buffo类没有生命周期,。对象可以。和静态成员变量,但不是类。好吧,我表达得很糟糕。我的意思是:类实例的生存期。@buffo Right,直到全局对象被销毁为止。因此,如果您试图从全局对象的析构函数使用它,您可能会遇到麻烦。@buffo很可能编译器将为静态成员变量和所有全局变量“分配”内存,因此实际上静态成员变量只不过是作用域全局变量。它是类的生命周期,而不是程序的生命周期,不是吗?@buffo职业没有生命,。对象可以。和静态成员变量,但不是类。好吧,我表达得很糟糕。我的意思是:类实例的生存期。@buffo Right,直到全局对象被销毁为止。因此,如果您试图从全局对象的析构函数使用它,您可能会遇到麻烦。@buffo编译器很可能会为静态成员变量和所有全局变量“分配”内存,因此实际上静态成员变量只不过是作用域全局变量。
class MyClass
{
private:
static const Vector POS;
}
const Vector MyClass::POS(100,300,0,0);
const Vector& MyClass::GetVector()
{
return POS;
}