본문 바로가기

2016/11

CHAPTER09 - 가상(Virtual)의 원리와 다중상속 1. 멤버함수와 가상함수와 동작원리 객체 내에 멤버함수가 존재한다고 설명해왔다. 이번 챕터에서는 멤버함수가 실제로 어디에 존재하는지를 설명하고자 한다. 단, 진실을 알고 난 이후에도 객체 내에 멤버함수가 존재한다고 인식하고 객체를 바라보기 바란다. 개념적으로는, 그리고 객체지향적 논리를 기준으로는, 객체 내에 멤버함수가 존재한다고 인식하는 게 옳으니 말이다. (1) 객체 안에 정말로 멤버함수가 존재하는가? 실제로는 객체가 생성되면 멤버변수는 객체 내에 존재하지만, 멤버함수는 메모리의 한 공간에 위치하고선 이 함수가 정의된 클래스의 모든 객체가 이를 공유하는 형태를 취한다. 즉 이것을 C언어 스타일의 구조체로 표현하면 다음과 같다. typedef struct A { int data; void (*showd.. 더보기
CHAPTER08 - 상속과 다형성(Polymorphism) 객체지향에서 가장 중요하다고 할 수 있는 '다형성(Polymorphism)'을 공부하는 챕터이다. 이 책 전체의 내용 중 가장 중요하다고 할 수 있다. 1. 객체 포인터의 참조관계 (1) 객체 포인터 변수 : 객체의 주소 값을 저장하는 포인터 변수 이전에 학습 내용에서 보았듯이, 클래스를 기반으로 포인터 변수를 선언할 수 있다. A *ptr; ptr = new A(); 그런데 클래스 A형 포인터는, A 객체 뿐만 아니라, A를 상속하는 유도 클래스의 객체도 가르킬 수 있다. class A {}; class B : public A {}; class C : public B {}; int main(void) { A *ptr1 = new B(); A *ptr1 = new C(); B *ptr2 = new C().. 더보기
방정식과 부등식 - 4 1. 이차함수의 그래프 이차함수 y = ax² + bx + c를 완전제곱식을 포함한 식으로 변형하면 다음과 같고, 그 그래프는 y = ax²의 그래프를 x축 방향으로 -b/2a만큼, y축의 방향으로 -(b²-4ac)/4a 축 : 직선 x = -b/2a 2. 이차함수의 그래프와 이차방정식의 해 이차함수의 그래프와 x축의 교점의 개수는 이차방정식 ax² + bx + c = 0의 실근의 개수와 같다. 이를 일반화하면, 이차함수 y = ax² + bx + c의 그래프와 y = mx + n의 교점의 개수는 이차방정식 ax² + bx + c = mx + n의 실근의 개수와 같다. 3. 이차방정식 근의 관한 문제 => 이차함수의 특수한 결과(즉, y = 0)가 나오는 시점이 언제인지 찾는 문제 => 이차방정식에서는 .. 더보기
CHAPTER07 - 상속(inheritance)의 이해 1. 상속(Inheritance) 상속은 특히 적용이 중요한 문법이다. 적절한 때에 선별적으로 적용할 수 있어야 한다. 시작에 앞서, '컨트롤(control)' 클래스 또는 '핸들러(handler)' 클래스에 대해 알아보자. - 기능의 처리를 실제로 담당하는 클래스로, 기능 제공의 핵심이 되기 때문에 반드시 존재하는 클래스이다. (1) 상속이란? B 클래스가 A 클래스를 상속하게 되면, A클래스가 지니고 있는 모든 멤버를 물려받는다. 즉, B 클래스에 선언되어 있는 멤버들 뿐만 아니라, A 클래스의 멤버들도 지니게 된다. - 상속받은 클래스는 자신에게 상속한 클래스의 멤버를 초기화할 의무를 지닌다. - 따라서 상속한 클래스의 생성자를 통해 멤버를 초기화하는 것이 좋다. class A { private: .. 더보기
방정식과 부등식 - 3 1. 이차식의 인수분해 이차방정식 ax² + bx + c = 0의 두 근이 p, q이면 이차식 ax² + bx + c는 ax² + bx + c = a(x-p)(x-q)와 같이 인수분해된다. 2. 이차방정식의 근과 계수의 관계 이차방정식 ax² + bx + c = 0의 두 근을 q, p라 할 때, (1) 두 근의 합 : q + p = -b/a (2) 두 근의 곱 : qp = c/a (3) 두 근의 차 : |a - b| = 루트(b² - 4ac)/|a| 3. 이차방정식의 작성 두 수 q, p에 대해 q + p = A, qp = B이면 이차항의 계수가 1인 x에 대한 이차방정식 x² - Ax + B = 0이다. 4. 이차방정식의 켤레근의 정리 (1) 모든 계수가 유리수인 이차방정식에서 한 근이 a + b루트(.. 더보기
CHAPTER06 - friend와 static, const 1. const C언어와 달리 C++에서는 const와 관련한 내용이 많다. (1) const 객체와 const 객체의 특성들 변수를 상수화 하듯이, 다음과 같이 객체도 상수화할 수 있다. const Simple s(10); 객체에 const 선언이 붙게 되면, 이 객체를 대상으로는 'const 멤버함수'만 호출이 가능하다. 즉, "이 객체의 데이터 변경을 허용하지 않겠다."라는 의미이다. 물론 const로 선언되지 않은 함수 중에도 데이터를 변경하지 않는 함수가 있지만, 가능성이 있는 함수는 모두 배제한다. ※ 멤버변수의 값을 조작하지 않는 함수는 가급적 const로 선언해서, const 객체에서도 호출이 가능하도록 할 필요가 있다. (2) const와 함수 오버로딩(Function Overloadin.. 더보기
방정식과 부등식 - 2 1. 방정식 ax = b의 해 (1) a != 0 일 때, ax = b는 일차방정식 => 해는 x = b/a로 1개이다. (2) a = 0일 때, b != 0 이면 0 * x = b 이므로 해가 없다.(불능) b = 0 이면 0 * x = 0 이므로 해가 무수히 많다.(부정) - 등식은 단순히 어떤 주장을 기호로 표현한 것일 뿐이다. 2. 방정식 참이 되도록 하는 문자의 값을 구하고자 하는 목적 미지수(unknown) or 변수(variable) : 방정식에서 특정 값을 찾아야 하는 문자 문자 상수(character constant) : 방정식에서 값을 찾는 것이 목적이 아닌 문자 다항방정식(polynomial equation) : 양변이 다항식으로 된 등식 원(元) : 미지수의 개수 차(次) : 다항식.. 더보기
CHAPTER05 - 복사 생성자(Copy Constructor) 1. 복사 생성자 복사 생성자란 생성자의 한 형태일 뿐이다. 그러나 생성자가 호출되는 시점이 일반 생성자와 차이가 있다. (1) C++ 스타일의 초기화 우리는 지금까지 다음과 같은 방식으로 변수와 참조자를 선언 및 초기화해 왔다. int num = 20; int &ref= num; 하지만 C++에서는 다음의 방식으로 선언 및 초기화가 가능하다. int num(20); int &ref(num); 위 두 가지 방법은 결과적으로 동일하다. 그렇다면 객체로 넘어와서 다음의 소스코드를 주목해 보자. First f1(10); First f2 = f1; 위의 코드 중, 'First f2 = f1'는 객체의 생성 및 초기화를 연상시킨다. 즉, f1과 f2 사이의 멤버 대 멤버 사이에 복사가 일어난다. 따라서 아래의 문.. 더보기
숨마쿰라우데 수1 독학 중 20대 중후반에 접어들어서, 수학의 필요성을 뼈저리게 느끼게 되어 다시 시작한 수학.. 수1은 '숨마쿰라우데' 책으로 정하고 시작한지 2주 정도 된 것 같다. 개념 원리도 잘 되어있고, 각각 개념에 맞는 문제풀이도 괜찮은 문제들로 구성되어 있는 듯하다. 그러나 나에게는 단원 정리 문제들이 난이도가 높았다. 풀이를 봐도 이해가 될까 말까한 그런 문제도 있었고.. 아무튼 계속 해봐야겠다. 더보기
방정식과 부등식 - 1 1. 복소수 복소수는 여러가지 방정식을 풀기 위해 등장 하였다. (1) 복소수 - 허수 단위 : i² = -1을 만족하는 수 i - 복소수 : 임의의 실수 a, b에 대하여 a + bi 꼴로 나타내어지는 수 (2) 복소수가 서로 같을 조건 a, b, c, d가 실수일 때, - a + bi = 0 a = 0이고 b = 0 - a + bi = c + bi a = c이고 b = d (3) 켤레복소수 복소수 a + bi에서 허수 부분 b의 부호를 바꾼 복소수, 즉 1.1 복소수의 정의 임의의 두 실수 a, b에 대하여 a + bi 꼴로 나타내어지는 수를 복소수(complex number)라 하고, a를 이 복소수의 실수부분, b를 이 복소수의 허수부분이라고 한다. ※ 순허수 : bi ( a= 0, b != 0).. 더보기