본문 바로가기

CHAPTER10 - 연산자 오버로딩 1 C++에서는 함수뿐만 아니라 '연산자도 오버로딩이 가능'하다. 연산자의 오버로딩이 조금 생소하게 느껴질 수 있으나 기본 개념이 매우 단순하니 어렵지 않을 것이다. 참고로 연산자 오버로딩은 C++을 이해하는데 매우 중요한 요소이다. 1. 연산자 오버로딩의 이해와 유형 함수가 오버로딩 되면, 그 수만큼 다양한 기능을 제공하게 된다. 마찬가지로 연산자의 오버로딩을 통해서, 기존에 존재하던 연산자의 기본 기능 이외에 다른 기능을 추가할 수 있다. 1.1 operator+라는 이름의 함수 다음 예제를 이해한다면, 연산자 오버로딩은 쉽게 정복이 가능하다. class Point { private: int xpos; int ypos; public: Point(const int &x, const int &y) : xpo.. 더보기
방정식과 부등식 - 5 1. 고차방정식 고차방정식(equations of higher degree)이란, 삼차 이상의 방정식을 말한다. 1.1 고차방정식의 풀이 (1) 인수분해를 이용한 풀이 - 고차방정식 f(x) = 0은, f(x)를 인수분해한 후 등식의 성질을 이용하여 차수가 낮은 몇 개의 방정식으로 바꾸어 푼다. 고차방정식을 푸는 것이 쉽지 않기 때문에 따로 구분을 한다. 일차방정식의 근은 등식의 성질로 바로 구할 수 있었고, 이차방정식의 근은 근의 공식을 이용하면 어떠한 방정식도 바로 풀 수 있었다. 즉, 일반적인 해법이 존재했고 그리 어렵지 않았다. 하지만 고차방정식의 일반적인 해법은 사용하기 매우 까다로우며, 오차 이상의 방정식의 일반적인 해법은 존재하지 않음이 알려져 있다. 고차방정식에서 다항식을 인수분해할 때, .. 더보기
CHAPTER09 - 가상(Virtual)의 원리와 다중상속 1. 멤버함수와 가상함수와 동작원리 객체 내에 멤버함수가 존재한다고 설명해왔다. 이번 챕터에서는 멤버함수가 실제로 어디에 존재하는지를 설명하고자 한다. 단, 진실을 알고 난 이후에도 객체 내에 멤버함수가 존재한다고 인식하고 객체를 바라보기 바란다. 개념적으로는, 그리고 객체지향적 논리를 기준으로는, 객체 내에 멤버함수가 존재한다고 인식하는 게 옳으니 말이다. (1) 객체 안에 정말로 멤버함수가 존재하는가? 실제로는 객체가 생성되면 멤버변수는 객체 내에 존재하지만, 멤버함수는 메모리의 한 공간에 위치하고선 이 함수가 정의된 클래스의 모든 객체가 이를 공유하는 형태를 취한다. 즉 이것을 C언어 스타일의 구조체로 표현하면 다음과 같다. typedef struct A { int data; void (*showd.. 더보기