본문 바로가기

객체지향

[C++] 함수 템플릿? 템플릿 함수? 템플릿의 동작원리는 함수 오버로딩(Function Overloading)과 유사한 형태로 구성이 된다. 다음 템플릿화된 소스코드를 보자. #include using namespace std; template T Add(T a, T b) { return a+b; } void main() { cout 더보기
[C++] 단항 연산자 오버로딩 증가/감소 연산자 오버로딩 이전에는 사칙연산인 이항연산자 오버로딩에 대해서 알아 봤는데 이번에는 단항 연산자인 증가(++), 감소(--) 연산자 오버로딩에 대해서 알아 보자. 만약 P객체가 증가가 된다면 멤버함수와 전역함수에서는 C++의 약속에 의해 어떻게 표현 될까? 이전의 이항 연산자 오버로딩때와 마찬가지로 아래와 같이 됨을 알 수 있을 것이다. p.operator++ ( ) //멤버 operator ++(p) //전역 그럼 단항 연산자 오버로딩의 예제 소스코드를 한번 살펴보자. #include using namespace std; class Point { private: int x, y; public: Point(int _x=0, int _y=0):x(_x), y(_y){} void ShowPosi.. 더보기
[C++] 연산자 오버로딩 (Operator Overloading)의 두가지 방법 연산자 오버로딩(Operator Overloading)은 C++ 문법과 우리와의 약속이라고 할 수 있는데, 우리가 함수를 정의하는데 이어서 operator라는 키워드와 연산자를 붙여서 함수의 이름을 만들 경우에 (operator + 이렇게 ) 우리가 일반적인 함수를 호출 방법 말고도, 연산자만을 이용해서도 함수가 호출 되도록 해주겠다는 이야기이다. 멤버 함수에 의한 오버로딩 #include using namespace std; class Point { private: int x, y; public: Point(int _x=0, int _y=0):x(_x), y(_y){} void ShowPosition(); Point operator+(const Point& p); }; void Point::ShowPo.. 더보기
[C++] 오버라이딩 (Overriding) 오버라이딩 (Overriding) : 오버라이딩(Overriding)이란 기본 클래스에 선언된 멤버와 같은 형태의 멤버를 파생 클래스에서 선언하는 것이다. 오버라이딩에 관해서 더 자세히 알아 보기 전에 오버라이딩을 재정의로 알고 있으신분들은 오버라이딩에 등장하는 특성이 재정의 인거지 오버라이딩 자체는 재정의가 아닌것을 명심하고 들어가보자. 은닉의 효과 #include using namespace std; class AAA { public: void fct(){ cout 더보기
[C++] 상속 다섯번째, 상속된 객체와 참조와의 관계 객체 레퍼런스 : 객체 레퍼런스란 객체를 참조 할 수 있는 레퍼런스로 클래스 포인터(객체 포인터)의 특성과 일치 한다. #include using namespace std; class Person { public: void Sleep(){ cout 더보기
[C++] 상속과 다형성 (Inheritance & Polymorphism) 우선 여기서는 상속과 다형성에 대한 간단한 의미만 정리 하고 넘어갈 것입니다. 다음에 상속과 다형성에 대해서 더 자세한 포스팅을 할 것입니다. 상속 (Inheritance) : 상속은 기존의 클래스를 토대로 해서 새로운 클래스를 만드는 방법이라고 할 수 있다. 객체지향 프로그래밍을 사용해서 워드 프로세서를 만드는 경우를 생각해보자. 고객으로부터 웹페이지 형식으로 문서를 저장할 수 있게 요구 받았다고 하면, 이때는 문서 저장과 관련된 기존의 클래스를 조금 개조해서 웹 페이지 형식으로 저장하게 만들 수 있다. 이렇게 기존의 클래스를 조금 고쳐서 새로운 클래스를 만들고 싶을 때 상속을 사용할 수 있다. 일상생활에서의 상속은 부모의 재산이나 부채를 그대로 이전하는 것을 의미하는데, 객체지향 프로그래밍에서의 상속.. 더보기
[C++의 특징 -5] This 포인터와 Friend This 포인터란? : This Pointer란 객체가 멤버함수를 호출할 때 자동으로 멤버함수에게 전달되는 포인터이며, 호출한 객체를 가리키는 포인터를 말한다. 흔히 자기 참조 포인터(자기 자신을 가리킬 수 있는 포인터)라고 불리우며, 멤버 함수에게만 this pointer가 전달된다.(Friend 함수는 멤버 함수가 아니므로 this pointer가 전달되지 않는다. Static 함수도 마찬가지이다.) 아래의 예제를 보면 금방 감이 올것이다. #include using namespace std; class Person { public: Person* GetThis(){ return this; //this 포인터를 리턴. } }; int main() { Person *p1 = new Person(); c.. 더보기