Languages/C++(15)
-
[C++] explicit 키워드
*이 글은 을 참고하여 공부한 글입니다. 의도치 않은 암시적 변환(Implicit Conversion) 예를 들기 위해 간단하게 오늘도 몬스터(Monster) 클래스를 작성해봤다. class Monster { private: std::string name; int health; int attackDamage; public: Monster(); Monster(std::string name); Monster(const char* name); Monster(std::string name, int health, int attackDamage); void ShowInformation(); }; Monster::Monster() : Monster("", 0, 0) {} Monster::Monster(std::str..
2022.02.12 -
[C++] Const 키워드에 대해
Const 변수 const int rangeDistance = 125; const 키워드를 사용하여 값을 상수로 선언하여 프로그래머가 변경할 수 없도록 지정할 수 있다. 즉, 읽기만 가능 컴파일 타임 때 해당 const 상수의 값이 결정되며, 런타임 중에는 변경할 수 없다. 평타 사거리, 시야 거리, 스킬 계수 등과 같이 한 번 설정한 값을 계속 유지하면서 사용할 때 유용하고, 프로그래머의 실수로 값을 변경하여 버그를 발견하기 어려운 상황 또한 예방해준다. 포인터 상수와 상수 포인터 포인터 상수 포인터가 가리키는 값을 상수로 만들어 변경이 불가능하도록 만든다. 포인터가 가리키는 변수의 값을 직접 변경하거나, 포인터 주소를 변경하는 것은 가능 int hp = 100, damage = 5; const int..
2022.02.09 -
[C++] 참조 리턴 함수
*을 보며 공부하여 정리한 글입니다. 오늘은 플레이어(Player) 클래스가 도와주기로 했다! class Player { private: int hp; public: Player(int hp) : hp(hp) {} int GetHP() { return hp; } // Getter 함수 int& AccessHP() { return hp; } // 참조 리턴 함수 void Show() { std::cout
2022.02.09 -
[C++] 초기화 리스트(Initializer list), static
*을 보며 공부하여 정리한 글입니다. 오늘도 열심히 우리의 이해를 도와줄 몬스터(Monster) 클래스! #include #include class Monster { private: std::string name; int health; int damage; static int totalMonsterNum; public: Monster() = default; Monster(std::string name, int health, int damage); }; 초기화 리스트를 사용하지 않은 일반적인 생성자 Monster::Monster(std::string name, int health, int damage) { this->name = name; this->health = health; this->damage =..
2022.02.09 -
[C++] 복사 생성자(Copy constructor), 얕은 복사(Shallow Copy), 깊은 복사(Deep Copy)
*을 보며 공부하여 정리한 글입니다. 1. 복사 생성자(Copy constructor) 객체를 복사하여 생성할 때 호출되는 생성자를 말한다. 사용자가 따로 넣지 않을 경우, 컴파일러가 자동적으로 디폴트 복사 생성자를 삽입해준다. class Monster { char* name; int hp; int damage; public: Monster(const Monster& copyMonster); // 복사 생성자 ... }; 함수 내부에서, 받은 인자의 값을 변경할 일이 없다면 다음과 같이 정의하는 것이 더 안전하다. Moster(const Monster& copyMonster); 즉, 다른 객체의 상수 레퍼런스를 매개변수로 받는다. const 이기 때문에 복사 생성자 내부에서 매개변수로 가져온 참조 데이터..
2022.02.09 -
[C++] 생성자(Default Constructor) 사용 시 주의사항
*을 보며 공부하여 정리한 글입니다. 예시를 들기 위해 다음과 같이 몬스터(Monster) 클래스가 있다고 가정한다. class Monster { private: string name; int hp; int attackDamage; public: Monster(); Monster(string name, int hp, int attackDamage) { ... } ... }; 객체 생성 방법 (동적 할당 X) 암시적 방법(Implicit) Monster monster("달팽이", 100, 5); Monster defMonster; // 디폴트 생성자 사용하여 객체 생성 명시적 방법(Explicit) Monster monster = Monster("달팽이", 100, 5); Monster defMonster..
2022.02.08