티스토리 뷰
순수 가상함수
정의 : 함수의 내부가 구현되어 있지 않은 형태의 가상함수이며 일반 가상함수를 = 0 또는 = NULL 로 초기화 하면서 생성한다
특징 : 순수 가상함수를 가진 클래스를 상속받은 자식 클래스는 부모의 순수 가상함수를 꼭! 오버라이딩하여 구현해야한다.
추상 클래스
정의 : 하나 이상의 순수 가상함수를 포함한 클래스를 추상 크래스라 한다
특징 : 추상 클래스를 상속받은 자식 클래스는 꼭! 추상 클래스가 포함하고 있는 순수 가상함수를 오버라이딩하여 구현해야하며
다형성의 집합(배열, 벡터) 등을 구현하기 위하여 필요하다.
추상 클래스 및 가상함수 구현과 사용의 예
class Parents
{
public:
virtual int Function(int a, int b) = 0; // = NULL 이렇게 0 또는 NULL 로 초기화 되어 내부가 구현되지 않은 함수를 순수 가상함수라 한다. 이럴 경우 무조건 상속을 받은 자식 클래스에서 해당 함수를 오버라이딩 해주어야 한다.
}
class ChildA : public Parents
{
public:
int Function(int a, int b)
{
return a + b;
}
}
int main()
{
ChildA* pChildAErr = new Parents; // 에러 발생!!! 추상 클래스로 객체생성 불가!!
ChildA* pChildA = new ChildA;
int nTemp = pChildA->Function(10,20);
cout << nTemp << endl;
retunr 0;
}
결과 : 30 출력
추상 클래스를 이용한 다형성의 예 (핵심!!)
class Parents
{
public:
virtual int Function(int a, int b) = 0; // 순수 가상함수
}
class ChildA : public Parents
{
public:
int Function(int a, int b)
{
return a + b; // A 클래스는 + 함수를
}
}
class ChildB : public Parents
{
public :
int Function(int a, int b)
{
return a - b; // B 클래스는 - 함수를
}
}
int main()
{
Parents* pChilds[] = {
new ChildA;
new ChildB;
};
int nTempA = pChilds[0]->Function(20, 10);
int nTempB = pChilds[1]->Function(20, 10);
cout << nTempA << endl;
cout << nTempB << endl;
retunr 0;
}
결과 : 30 10
'C++ > Skill (기본지식, 모던C++)' 카테고리의 다른 글
모던C++) 조건 변수 (condition variable) (0) | 2020.08.25 |
---|---|
기본지식 : 포인터.2) 얕은 복사, 깊은 복사 (0) | 2020.05.24 |
기본지식 : 포인터.1) Call-by-Reference, Call-by-Value (0) | 2020.05.24 |
모던C++) 이차원 벡터(vector)선언과 동시에 초기화 하기 (0) | 2020.05.20 |
모던C++) 두개의 값을 갖는 pair<>, make_pair() (0) | 2020.05.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- unrealengine
- 람다함수
- UE4
- 람다
- coordinate system
- double free
- c++11
- rotator
- C
- UE5
- c++
- Lambda
- bug
- LambdaFunction
- Trouble shooting
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함