繁体   English   中英

如何初始化 const / non-const static 参考成员?

[英]How to initialize const / non-const static reference member?

class Foo {
private:
    int m_i;

public:
    Foo(int i) : m_i(i) {}
};

class FooA
{
private:
    const static Foo & m_foo;
    static Foo & m_foo2;
};

Q1> 如何初始化 const static 参考?

Q2> 如何初始化非常量 static 参考?

注意:您可以对 class FooA 进行更改以说明方法。

以同样的方式初始化非参考static成员:

//Foo.cpp

const Foo & FooA::m_foo = fooObj1; 
Foo & FooA::m_foo2 = fooObj2;

其中fooObj1fooObj2Foo类型的全局变量。

注意fooObj1fooObj2必须在m_foom_foo2之前初始化,否则你可能会遇到static 初始化顺序惨败的问题。

与任何其他 static 数据成员的方式相同:

Foo foo(5);
const Foo& FooA::m_foo(foo);
Foo& FooA::m_foo2(foo);

您初始化 const 和非 const static 引用的方式与初始化任何 static 成员的方式相同:通过将初始化放在全局 scope 中。

const Foo& FooA::m_foo = ...whatever...
Foo& FooA::m_foo2 = ...whatever...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM