inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

private 안에 static 멤버변수

해결된 질문

343

ii00

작성한 질문수 16

1

8.11강 3분쯤 보다가 궁금한 점이 있어 질문 남깁니다.

 

class Something {
private:
    static int s_value;

public:
    int getValue() {
        return s_value;
    }
}

int Something::s_value = 1024;

이렇게 클래스 내부에서 s_value 선언을 하고, 클래스 외부에서 초기화를 하셨는데,

클래스 외부에서 private 안에서 선언된 멤버변수로 접근하는것이 불가능한것으로 알고 있는데, 이 경우는 어떻게 가능한건지 알고 싶습니다.

 

 

int main() {
    cout << something.getValue() << endl;
    // cout << something.s_value << endl;    // 에러
}

그리고 이렇게 cout으로 출력했을 때, 아래 부분이 에러나는 이유도 궁금합니다.

 

private 내의 static 멤버변수는 외부에서 접근이 불가능한거고, 초기화만 외부에서 해줄 수 있는건가요?

 

c++

답변 2

1

Soobak

안녕하세요, 질문&답변 도우미 Soobak 입니다.

 

말씀하신 내용이 맞습니다.

static 멤버 변수의 초기화 과정에 한정되어 클래스 외부에서 이루어질 수 있습니다.
이는 static 멤버가 클래스의 인스턴스가 아니라, 클래스 자체에 속해있기 때문입니다.

하지만, 직접적으로 접근을 허용하는 것은 아니므로, public 멤버 함수인 getValue() 함수를 통해서 접근해야 합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

ii00님께서 질문하신 내용은 클래스 외부에서 private으로 선언된 정적 멤버 변수(static)를 초기화하는 방법에 대한 것입니다. C++에서는 private 정적 멤버 변수도 클래스 외부에서 초기화할 수 있습니다. private 지정자는 해당 멤버 변수가 클래스 내부에서만 접근되도록 제한하지만, 초기화는 예외적으로 허용됩니다. 이는 클래스 정의 외부에서 정적 멤버 변수에 대한 메모리 할당이 이루어져야 하기 때문입니다.

클래스 내부에서 private으로 선언된 정적 멤버 변수를 클래스 외부에서 초기화하는 방법에 대한 유사한 질문에 대한 답변 링크를 추천해드립니다:

이 링크에서 홍정모 강사님께서는 정적 멤버 변수의 외부 초기화에 대해 설명하시며, C++에서는 정적 멤버 변수 초기화 시 접근 지정자(private, public 등)에 관계없이 초기화가 가능하다는 점을 언급하고 계십니다. 추가적으로, 이에 관련된 토의를 더 심도 있게 다루는 외부 자료에 대한 링크도 제공되어 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

강의자료는 어디서 받을 수 있죠?

1

20

2

교재 있나요?

1

138

2

11:11 부근에 Something::temp와 Something::getValue의 앞에 &를 붙이는 이유가 뭔가요? (함수 이름은 포인터(주소)가 아닌가요?)

1

91

3

using namespace std; 선언 후에 std::를 하는 이유가 궁금합니다

1

102

2

cstr직접구현

0

116

3

BubbleSort

1

78

2

숙제 마지막 부분

1

79

2

강의와 똑같이 진행했는데 링킹 에러가 발생합니다.

1

95

2

수업할때 레퍼런스로 사용하는 도서는 어떤 도서인가요??

1

164

2

공변반환형 관련 문의 드립니다.

1

90

2

170강 유니크 포인터에대해 질문있습니다

1

81

1

섹션 5 퀴즈의 답이 이상합니다

1

84

2

이중포인터와 배열이 이해가 안됩니다.

1

159

2

5분 17~5분 34초 객체 잘림 질문

1

79

1

Resource.h 코드 알려주세요

1

72

1

char name[] 배열의 길이와 관련해 일부 궁금점이 생겨서 질문합니다

1

94

2

화면좌측 숫자 보이기

1

115

1

화면 좌측 숫자 보이기

0

67

1

처음 c++ 수강하려는데요. 비주얼스튜디오 2022 다운로드해서 설치하면 되는건가요??

1

138

3

46강 string 버퍼 질문입니다

1

81

2

프로그래머스 수열과 구간 쿼리 2 문제 질문입니다.

1

124

2

[] 범위 검사시 assert 사용 관련 질문

1

90

2

Lecture 클래스 멤버변수 명명 관련

0

92

2

프로그래머스의 대소문자 바꿔서 출력하기 문제를 푸는데요

0

74

1