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 정적 참조를 초기화하는 방법은 무엇입니까?const/non-const 정적 참조 멤버를 초기화하는 방법은 무엇입니까?
Q2> const가 아닌 정적 참조를 초기화하는 방법은 무엇입니까?
참고 : 메소드를 설명하기 위해 FooA 클래스를 변경할 수 있습니다.
+1 (이 할당은 헤더가 아닌 소스 파일에 있어야합니다.) 정적 초기화 순서 실패 문제에 대한 설명에 대해 또 다른 +1을 할 수 있습니다. –
@Nawaz, 다음 코드가 합법적이라고 생각하십니까? 'const Foo & FooA :: m_foo = Foo (10); Foo & FooA :: m_foo2 = Foo (10);' – q0987
@ q0987 : 컴파일 해 보셨습니까? 성공적으로 컴파일합니까? 첫 번째 줄은 컴파일되지만'm_foo'를 사용할 수 없습니다. 그걸하지 마라. 이것을 넣으십시오 :'Foo foo1 (10), foo2 (20); const Foo & FooA :: m-foo = foo1; Foo & FooA :: m_foo2 = foo2;' – Nawaz