C++/summary 70

함수 템플릿

템플릿(template): 물건을 만들 때 사용되는 틀이나 모형을 의미 함수 템플릿(function template): 함수를 찍어내기 위한 형틀 클래스 템플릿 int get_max(int x, int y) { if( x > y ) return x; else return y; } 타입만 바뀌면 다른 타입도 만들 수 있다. 일반화 프로그래밍(generic programming): 일반적인 코드를 작성하고 이 코드를 정수나 문자열과 같은 다양한 타입의 객체에 대하여 재사용하는 프로그래밍 기법 ->>>>> 함수 템플릿 template // 모두 T니깐 모두 같은 타입이어야 한다. T get_max(T x, T y) { if( x > y ) return x; else return y; } 사용시는 get_max..

C++/summary 2010.10.11

순수 가상 함수 - 다형성의 마무리

상속, 재정의, 가상함수(동적 바인딩) 사용시는 업캐스팅 해서 사용해야함 - 다형성의 구현 단계와 사용단계 virtual void draw() = 0; - 순수 가상 함수. 하지만 이런 클래스는 객체를 생성할 수 없다. 완전치가 않아서. - > 추상 클래스. 추상 클래스(abstract class): 순수 가상 함수를 하나라도 가지고 있는 클래스 소스 코드의 예 class Shape { protected: int x, y; public: … virtual void draw() = 0; }; class Rectangle : public Shape { private: int width, height; public: void draw() { cout

C++/summary 2010.10.06

다형성을 이용한 Employee Problem 예제.

#include #include using namespace std; class Employee{ string name; int sabun; public: Employee(int s, string n ) : name(n), sabun(s){} int GetSabun() { return sabun;} string GetName() { return name; } virtual int GetPay() { return 0; } // 다형성을 위한 재정의 함수, 동적 바인딩 }; class Permanent : public Employee { int salary; // 연봉 , 나중에 salesman 추가시는 프로텍티드로 바꾸면 된다. public: Permanent(int s, string n, int sal)..

C++/summary 2010.10.04

다형성(Polymorphism)

(클래스 구현단계) => 먼저 알아야 할것은 상속, 재정의-overriding, 가상함수-동적 바인딩 (객체 사용) =>업캐스팅( upcasting ) 상황에서 재정의 멤버함수를 호출한다. 객체를 사용한다? 객체가 가지는 공개된 동작을 호출한다. -> 인스턴스 화 시킴. 자식보다 부모가 더 큰 타입이다. 업캐스팅 -> 자식 클래스 타입( 작은타입 )을 부모 클래스타입( 큰 타입 )으로 변환 -> 부모클래스 타입 포이턴 // 레퍼런스 변수에 자식 객체를 대입한다. 다운캐스팅 -> 부모 클래스 타입을 자식 클래스타입으로 변환 shape *ps = new Circle(); // 부모가 더 큰 타입이라 작은 타입을 변환 가능하다. class Shape { protected: int x, y; public: vo..

C++/summary 2010.09.29

상속

class car {} class sportcar : public(접근자) car // 상속을 표시한다. {} 상속을 하는 이유는 중복되는 멤버 변수 및 함수를 피하기 위해서다. 접근 지정자에 대한 권한. 접근 지정자 현재 클래스 자식 클래스 외부 private ○ × × protected ○ ○ × public ○ ○ ○ 상속과 생성자/소멸자 자식 객체를 생성하면 부모 생성자 호출 한 다음 자식 생성자 생성 -> 자식 소멸자 - > 부모 소멸자 호출 이러한 순서로 움직인다. 클래스간 관계성 is - a 관계 : 상속으로 구현한다. has - a 관계 : 포함 ex) 컴퓨터 클래스. 1.) class ClassRoom : public 컴퓨터 {} 2.) class ClassRoom{ 컴퓨터 c; } 여기..

C++/summary 2010.09.27

전역 메모리, 스택, 힙 메모리엔 어떤것이?

전역 메모리에는 모든 지역 함수(Local Function) 바깥에 선언된 변수(Global Variable)를 할당한다. 이 때 메인 함수는 운영체제가 프로그램 실행을 위해 최초로 호출하는 일종의 지역 함수로 구분된다. 스택 메모리는 함수 내에 선언된 지역 변수들을 위한 공간이다. 지역 변수는 필요한 공간의 크기를 컴파일 시에 확정한다. 함수 호출시 그에 해당하는 지역 변수를 위한 공간을 확보하며 해당 함수의 실행이 끝나게 되면 지역 변수의 공간을 자동으로 해제하게 된다. 힙 메모리의 경우 프로그램 실행시 일정량의 힙 메모리를 할당하게 되며 프로그램 실행 중 필요에 의한 동적 메모리 할당을 위한 공간이 힙 메모리이다. (C에서는 malloc,C++ 에서는 New 명령을 사용하여 메모리를 할당하게 된다...

C++/summary 2010.09.08

연산자 중복

sum = x + y + z 이것을 구현하자. 멤버 함수로 구현. 비멤버 함수(프랜드 함수)로 구현 // 인자 갯수의 차이가 난다. 원점 벡터 예제 private: double x, y; public: Vector(double x, int double){ this->x = x; this->y = y; } 반환형 operator연산자(매개 변수 목록) { ....// 연산 수행 } (예) Vector operator+(const Vector&, const Vector&); // 반환값이 클래스. // 공개된 멤버만 접근이 불가해서, 프렌드로 구현하는게 좋다. 실질적인 예를 살펴보자 비멤버 함수(레퍼런스)로 구현. class Vector { private: double x, y; public: Vector(..

C++/summary 2010.06.11