• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

8.11 private static 멤버 변수

22.08.23 17:49 작성 조회수 148

0

안녕하세요 강의를 수강하고 있는 학생입니다.

cpp 에서는 클래스 안에 private으로 접근제어자를 설정한 변수에 대해서라도 static으로 선언해준다면

클래스::static멤버변수 로 호출을 할 수 있는건가요??

그렇게 되면 private으로 선언한 이유가 궁금합니다!

 

감사합니다

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2022.08.23

용례를 알 수 있을까요?

일반적으로 아래와 같이는 불가합니다.

 

#include <iostream>

class foo
{
    private:
        static int i;
};


int main() {
  foo::i = 10;
  std::cout << foo::i << std::endl;
  return 0;
}

 

test.cc:12:21: error: 'i' is a private member of 'foo'
  std::cout << foo::i << std::endl;
ans2568님의 프로필

ans2568

질문자

2022.08.23

8.11장에 16분 57초 경에 나오는 Something::_init Something::s_initializer; 에 대해서 s_initializer는 private 접근 제어자를 갖고 있는데 선언을 해서 사용하는 게 의문점이 들어서 질문 드렸습니다

강민철님의 프로필

강민철

2022.08.24

아아, 해당 부분은 단지 생성자를 호출하는 부분을 보여주는 예시입니다.

s_initializer를 가령 main함수에서 여러 번 초기화해보면 위에 보여드린 코드와 같이

오류가 발생합니다. private으로 선언되어 있기 때문입니다.

ans2568님의 프로필

ans2568

질문자

2022.08.24

main 함수 밖에서는 사용할 수 있지만 예시를 든 것 뿐이지 실제로는 자주 사용하지 않는다는 말씀이신가요??

ans2568님의 프로필

ans2568

질문자

2022.08.24

main 함수 안에서는 사용 불가능하다는 점은 인지했습니다!