Languages(59)
-
[C++] 연산자 오버로딩 (Operator Overloading) (1)
/* 본 글은 글을 참고하여 공부한 글입니다. */ 연산자 오버로딩(Operator Overloading) 오버로딩 (Overloading) 객체지향언어에서 나오는 개념으로, 동일한 이름이지만 여러 개를 정의할 수 있는 것을 말한다. 대표적으로 함수 오버로딩이 있음 C++에서는 연산자 또한 오버로딩을 적용할 수 있다. 범위지정 연산자(::), 멤버 지정 연산자(.), 멤버 포인터 지정 연산자 (.*)는 오버로딩할 수 없다. 기본적으로 제공되는 자료형에 적용할 때는 사용할 수 없다. 비정적 클래스 멤버 함수 또는 전역 함수이어야 한다. 오버로딩 가능한 연산자들 산술 연산자 (+, -, *, ...) 비교 연산자 (==, !=, ...) 대입 연산자 (=) 복합산술 연산자 (+=, -=, ..) 논리 연산자..
2022.03.08 -
[C++] mutable 키워드
Java나 C#에서 string 클래스를 공부하다가 들었던 단어이다. (물론 string 클래스는 immutable이다.) 예전에 C++을 공부할 땐 보지 못했던 키워드라, 신기해서 살펴봤다. const 키워드를 통해 변수나 함수를 읽기 전용으로 만들 수 있었다. 당연히 const 멤버 함수 내부에서 값을 수정하는 것이 불가능하다. class Monster { int hp; public: void Heal(int value) const { // hp += value; const 멤버 함수 내부에서 값 수정 불가 } }; 하지만 수정하려는 변수에 mutable 키워드를 붙이면 const 멤버 함수 내에서도 수정이 가능해진다. class Monster { mutable int hp; // mutable 추가..
2022.03.08 -
[C#] 프로퍼티(Property)
*이 글은 책을 바탕으로 공부한 글입니다. 문제 시, 삭제하겠습니다. 1. 프로퍼티(Property) 외부에서 어떤 클래스 내부의 변수를 사용할 때, 해당 변수를 이곳 저곳에서 가져가 사용하는 곳에서마다 조건을 보는 것은 비효율적일 수 있습니다. 일반적으로는 다음과 같이 원할 겁니다. 변수의 값이 항상 올바르도록 강제하여, 할당된 값을 확실히 하길 바랄 경우 예를 들어, 플레이어 체력을 0 ~ 100에만 값 할당하기, 정해진 조합만을 허용하는 문자열 변수 만들기 등 변수의 값이 변경되었을 때를 감지하여, 이 값에 영향을 받는 다른 함수나 동작을 실행하길 원할 경우 이에 활용할 수 있는 것이 바로 프로퍼티(Property)입니다. 2. 프로퍼티의 사용 예시 1) 정해진 범위 내의 값만 할당하기 대략적인 사..
2022.02.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