Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回静态成员变量c+的引用+;_C++_Reference_Static - Fatal编程技术网

C++ 返回静态成员变量c+的引用+;

C++ 返回静态成员变量c+的引用+;,c++,reference,static,C++,Reference,Static,返回静态成员变量的引用是否有问题? (参考以避免复制成本) 向量接受4个参数(x,y,z,w) h .cpp 如果POS被声明为static,那么它的生命周期就是程序的生命周期,因此返回对它的引用是安全的。如果POS被声明为static,那么它的生命周期就是程序的生命周期,因此返回对它的引用是安全的。我认为这很好。单例模式的一些实现也做了同样的事情。我认为这很好。对于Singleton模式的一些实现也做了同样的事情。这是类的生命周期,而不是程序的生命周期,不是吗?@buffo类没有生命周期,。对

返回静态成员变量的引用是否有问题? (参考以避免复制成本)

向量接受4个参数(x,y,z,w)

h

.cpp


如果
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;
}