인프런 커뮤니티 질문&답변

Ambition님의 프로필 이미지
Ambition

작성한 질문수

홍정모의 따라하며 배우는 C++

8.11 정적 멤버 함수

Something::_init Something::s_initializer; 의 의미는 무엇인가요??

해결된 질문

작성

·

453

0

제목 그대로 궁금한데요. Something::_init이 Something 클래스 안에있는 init클래스까지는 이해가 됩니다. 그런데 왜 _init 옆에 또 Something을 써줘야하나요??

답변 1

0

Something::_init Something::s_initializer;

위 코드에서 볼드체 한 부분에 대한 문의로 보이는데,

s_initializer로 초기화할 적에 특정 클래스를 지정해야 하기 때문입니다.

인스턴스를 생성하는 방법에 대해 다시 복습해보시면 도움을 받을 수 있을 것입니다.

Ambition님의 프로필 이미지
Ambition
질문자

네 중첩 클래스에서 클래스네임으로 범위 결정 연산자를 교수님께서 사용하지 않아서 잘 몰랐는데 인스턴스 부분 다시한번 복습해서 이해해보겠습니다!

Ambition님의 프로필 이미지
Ambition
질문자

그렇다면 클래스 외부에서 int Something::s_value; 를 int형을 반환하는 Something클래스의 s_value를 정의한 것과 마찬가지로

Something::_init Something::s_initializer; 도 Something 클래스에 있는 _init 자료형을 반환하는 Something의 s_initializer를 정의한 부분(s_initializer가 Something의 private부분이므로)이라고 이해한게 맞나요??

코드 맥락의 이해를 돕기위해 강의 전반의 소스코드를 불러왔습니다.

#include <iostream>
using namespace std;

class Something
{
public:
		class _init {
		public:
			_init()
			{
				s_value = 9875;//static변수는 공유가능
			}
		};

private:
	static int s_value;
	int m_value;
	static _init s_initializer;//Something의 nested class는 private으로 선언
	
public:
	Something():m_value(123){}

	static int& getValue()
	{
		return s_value;
	}
};

int Something::s_value; // static variable 선언과 정의 분리
Something::_init Something::s_initializer;
//Something 클래스에 있는 _init 자료형의 Something클래스의 s_initializer;

int main()
{
	cout << Something::getValue() << endl;
	return 0;
}

 

Ambition님의 프로필 이미지
Ambition

작성한 질문수

질문하기