C++

클래스 멤버들도 static 개념을 접목할 수 있습니다. 프로그램 내에서 한 클래스에 대해서 현재 존재하는 총 객체의 수를 얻고 싶을때와 같은 상황에서 사용할 수 있습니다. int Player::get_num_players() { return num_players;// num_players는 Player 클래스 내의 static 정수 } 헤더 파일에서 클래스를 선언하고, 특정 attribute를 static 키워드를 붙여서 선언합니다. 하지만 주의해야 할 점은 해당 속성에 대한 초기화는 .cpp 파일에서 행합니다. 클래스의 정의 내에서 바로 초기화를 하면 안됩니다. // Static class members // main.cpp #include #include "Player.h" using namespa..
C++에서는 클래스에도 상수 (const) 개념을 적용할 수 있습니다. const가 적용된 클래스는 속성(attribute)를 변경할 수 없습니다. 그렇다면 속성의 멤버 함수를 호출하면 어떻게 될까요? const Player villain {"Villain", 100, 55}; villain.set_name("Thanos");// COMPILER ERROR std::cout
this 포인터는 객체의 주소값을 가집니다. 그렇기 때문에 *this 로 접근하면 해당 객체의 주소 값을 나타냅니다. 이는 클래스 범위 내에서만 사용이 가능합니다. (파이썬을 공부해보셨다면 self 키워드를 생각하시면 이해가 빠를 것 같습니다.) 예시를 보겠습니다. void Account::set_balance(double balance){ this->balance = balance; } 입력 인자를 balance_input 와 같이 설정하고 balance = balance_input 으로 해도 되지만, 위와같이 객체 스스로의 balance를 this로 표기하여 구분하는 방법도 유용합니다.
INTRO int total {0}; total = 100 + 200; 위 코드에서 total은 포인터로 접근할 수 있는 변수 값, L-Value입니다. 그리고 total에 할당되는 100+200 수식은 포인터로 접근할 수 없는 R-Value입니다. C++에서 이런 값들은 이름없는 temp value로 일시적으로 저장되었다가, total과 같은 값에 복사 저장되고 난 뒤 제거됩니다. 그리고 같은 일이 temp value를 temp object로만 바뀌어서 객체에서도 발생합니다. 복사 생성자를 생각하시면 됩니다. 그런데, 복사 생성자를 반복적으로 호출하게 되면 temporary object가 그만큼 많이 생성됩니다. 반면 객체는 상대적으로 메모리를 많이 요구합니다. Deep copy를 행하면 더욱 많이 요..
Ricky U. Lee
'C++' 카테고리의 글 목록 (3 Page)