반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- dp
- 웹프로그래밍
- C++
- sql
- 프로그래머스
- react
- Level1
- 프로그래밍
- 파이썬
- 배열
- VUE
- Level3
- web
- 코테연습
- 백준
- 자바스크립트
- typescript
- 카카오
- python
- CS
- 동적계획법
- Level2
- Medium
- LeetCode
- 고득점Kit
- javascript
- OS
- 리액트
- Doitvue.js입문
- 리트코드
Archives
- Today
- Total
[c++] Virtual Functions (가상 함수) 본문
반응형
-
virtual function
부모 메소드 앞에 virtual 키워드를 사용하면 부모객체 포인터에서 업캐스트했을 때에도 오버라이드한 자식 메소드를 실행할 수 있다. (자식 객체 포인터에 부모 객체를 다운캐스트 했을 경우에도 )class Shape{ public: void Move(double x, double y); virtual void Draw(); // pure virtual function Shape(); Shape(double x, double y); protected: double _x, _y; }; void Shape::Draw() const{ cout << "[Shape] Position = ( " << _x << ", " << _y << ")\n"; } (생략) Shape* shapes[5] = { NULL }; shapes[0] = new Circle(100, 100, 50); shapes[1] = new Rectangle(300, 300, 100, 100); shapes[2] = new Rectangle(200, 100, 50, 150); shapes[3] = new Circle(100, 300, 150); shapes[4] = new Rectangle(200, 200, 200, 200); for (auto i = 0; i < 5; ++i) shapes[i]->Draw(); for (auto i = 0; i < 5; ++i) { delete shapes[i]; shapes[i] = NULL;
2. pure virtual functions (순수 가상 함수)
자기 자신의 구현이 없어도 됨
class Shape{
public:
void Move(double x, double y);
virtual void Draw() const = 0; // pure virtual function
Shape();
Shape(double x, double y);
protected:
double _x, _y;
};
(생략)
반응형
'객체지향프로그래밍 (C++)' 카테고리의 다른 글
[c++] 예외처리 (0) | 2020.07.13 |
---|---|
[c++] string 인자로 받을때 (0) | 2020.07.10 |
[c++] multiple inheritance (다중 상속) (0) | 2020.07.10 |
[c++] inhertitance (상속) (0) | 2020.07.10 |
[c++] 채팅창 필터링 프로그램 ( find 함수) (0) | 2020.07.09 |
Comments