728x90 cpp 멤버 이니셜라이저(Member Initializer) cpp에서는 멤버 이니셜라이저를 지원! 멤버 이니셜라이저가 뭘까? 멤버(member) = 클래스 내의 멤버 변수 이니셜라이저(initializer) = 초기화 멤버 이니셜라이저 = 클래스가 생성되면서 바로 멤버 변수를 초기화해주는 것 멤버 이니셜라이저가 왜 생겼을까!? 멤버 이니셜라이저가 있기 전에는 밑에 코드와 같이 생성자 안에서 변수를 초기화해줘야 했다 class A { private: int a; public: A(int _a) { a = _a; } } 이렇게 생성자를 통해서 멤버 변수를 초기화하는 것은 불편하기에 멤버 이니셜라이저(Member Initializer) 필요! 멤버 이니셜라이저의 장점 1. 초기화의 대상을 명확히 인식이 가능 2. 선언과 동시에 초기화가 이뤄지는 바이너리 코드가 생성되.. 2022. 1. 3. cpp static const 변수 c++98으로만 코드를 짜는 중에 발생한 오류! error: default member initializer for non-static data member is a C++11 extension [-Werror,-Wc++11-extensions] 클래스 안에서 변수 초기화는 c++11부터 지원해준다!😱 class A { private: int a = 0; } 이렇게 쓰는 것이 불가능!! c++98에서 static const 변수에는 클래스 안에서 초기화가 가능! 그렇다면 static const는 왜 클래스 안에서 초기화가 가능할까!? static 변수란? 객체들이 생성될 때마다 생성되는 것이 아닌, 클래스가 정의되기 이전(프로그램 시작과 끝까지)부터 메모리에 할당된 변수 = 클래스 변수(클래스 당 하나씩.. 2022. 1. 3. cpp 멤버 함수 안에서 자신과 동일한 클래스 객체 private 멤버 접근 밑에 코드를 보면 원래 temp.num은 private이라 바로 접근해서 값을 바꿀 수 없다 근데 저 코드를 컴파일해보면 오류가 안 난다!! 왜일까!?? class Sum { private: int num; public: void sum { // num이 private이지만 자신의 클래스와 동일한 멤버 함수에서는 num에 접근 가능!! Sum temp; temp.num = 3; } } 멤버 함수 안에서 자신과 동일한 클래스 객체를 생성했을 때, 그 클래스 객체는 자기 클래스의 멤버 함수에 있는 것처럼 자신의 private 멤버에 자유롭게 접근이 가능하다! 너무 신기함!! 🤭🤭 2021. 12. 30. 이전 1 다음 728x90