본문 바로가기
반응형

Language17

12.연산자 오버로딩 연산자 오버로딩 (Operator Overloading) +, = , *등등의 연산자를 유저 정의 타입(ex. 클래스)에 대해 사용할 수 있도록하는 기능 → player1 + player2 유저 정의 타입을 기본 타입(int, float, etc)과 유사하게 동작하게 할 수 있다. 코드를 보다 이해하기 쉽고, 작성하기 쉽게 만듬 → 항상 좋은 것은 아니다. 직관성과 가독성을 높인다고 생각이 들 경우 활용 대입 연산자(=)를 제외하면 자동 생성되지 않으며, 사용자가 구현해 주어야 함 #include class Player{ }; int main(){ Player p1; Player p2; Player p3 = p1 + p2; int a = 1, b = 2; int c = a + b; } 예) 숫자 하나를 .. 2023. 12. 25.
11.다형성 다형성 (Polymorphism) 정적 바인딩(Compile-time) (함수 오버로딩, 연산자 오버로딩) 동적 바인딩(Run-time) 런타임 다형성 런타임에서 같은 함수에 대해 다른 의미를 부여 ← 함수의 오버라이딩 추상화된 프로그래밍을 가능하게 함 C++에서 런타임 다형성의 구현을 위해 아래와 같은 조건이 필요 상속 기본 클래스 포인터 또는 참조자 가상 함수 다형성과 동적바인딩 정적 바인딩은 컴파일시 타입을 기준으로 호출 함수를 결정하지만, 동적 바인딩은 런타임시 실제 메모리에 저장된 타입을 기준으로 호출 함수를 결정 가상 함수 Move()와 같이, 유도 클래스에서 기본 클래스의 함수를 재정의 또는 오버라이드해 사용할 수 있음 오버라이드된 함수는 동적 바인딩을 통해 활용 가능 오버라이드될 수 있는 .. 2023. 12. 25.
10.상속 상속 (Inheritance) 상속이 필요한 이유 // Player 클래스 class Player{ private: int x, y, speed; public: Player(int x, int y, int speed) :x{x}, y{y}, speed{speed} { } void Move(int dx, int dy){ x += dx * speed; y += dy * speed; void ShowPosition(){ cout 2023. 12. 23.
09.this-const-static-friend this 포인터 (this Pointer) this는 C++ 키워드 멤버 함수를 호출한 객체의 주소 값 사용 예 void Player::SetPosition(int x, int y){ x = x; y = y; //명확하지가 않다. } void Player::SetPosition(int x, int y){ this -> x = x; this -> y = y; // 좌변은 변수, 우변은 인자로 명확 } //ex 2 class Player{ private: int x, y; int speed; public: Player(int x, int y, int speed){ : x{x}, y{y}, speed{speed}; { cout 2023. 12. 22.
반응형