-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
8.11 private static 멤버 변수
22.08.23 17:49 작성 조회수 148
0
안녕하세요 강의를 수강하고 있는 학생입니다.
cpp 에서는 클래스 안에 private으로 접근제어자를 설정한 변수에 대해서라도 static으로 선언해준다면
클래스::static멤버변수 로 호출을 할 수 있는건가요??
그렇게 되면 private으로 선언한 이유가 궁금합니다!
감사합니다
답변을 작성해보세요.
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
질문자2022.08.23
8.11장에 16분 57초 경에 나오는 Something::_init Something::s_initializer; 에 대해서 s_initializer는 private 접근 제어자를 갖고 있는데 선언을 해서 사용하는 게 의문점이 들어서 질문 드렸습니다
강민철
2022.08.24
아아, 해당 부분은 단지 생성자를 호출하는 부분을 보여주는 예시입니다.
s_initializer를 가령 main함수에서 여러 번 초기화해보면 위에 보여드린 코드와 같이
오류가 발생합니다. private으로 선언되어 있기 때문입니다.
답변 1