2022. 12. 26. 14:18ㆍC++
1. overriding
1.1. overriding의 개념
- overriding: 가상함수의 구현
- 가상함수 구현 시 파생 클래스에서 같은 이름의 함수를 재정의할 수 있다(객체지향 프로그래밍의 다형성 구현)
- 가상함수 구현 후 파생 클래스에서 재정의되는 동일명의 함수는 리턴값, 매개변수 개수, 자료형이 같아야 한다
- 가상함수 구현의 예시
1.2. overriding과 overloading의 비교

1.3. binding
- binding: 변수와 함수에 대한 메모리 할당이나 함수 호출 발생 시 실제 처리해야 할 명령어 결정 시점
- static(early) binding: 컴파일 시 결정되며, static 변수와 overloading이 해당
- dynamic(late) binding: 실제 실행 시(runtime) 결정되며, 지역변수와 overriding이 해당
- static member variable(정적 멤버변수): 멤버변수에 static 기입 시 객체의 개수와 상관없이 하나만 생성
2. Template
2.1 템플릿의 개념
- 코드의 변경없이 함수의 리턴값이나 매개변수의 자료형만 변경 시 유용(매개변수를 통한 다형성 제공)
- generic function(포괄적 함수): 값과 자료형을 같이 인자로 받는 함수로, 받은 자료형으로 함수 생성
2.2 템플릿의 구현
템플릿 구현:
template <class 자료형명1, 자료형명2..> 리턴형 함수명(자료형명1 매개변수1, 자료형명2 매개변수2..){}
template <class T> void funcA(T x, T y){}
매개변수마다 자료형을 다르게 하고 싶을 경우:
template <class T1, class T2> void funcB(T1 x, T2 y){}
템플릿 구현 후 해당 함수 호출 시 매개변수의 자료형을 정할 수 있다.
2.3. 템플릿을 활용한 클래스 구현
#include <iostream>
using std::cout;
using std::endl;
template <class T1, class T2, class T3 >
class CCC
{
T1 x;
T2 y;
T3 z;
public:
CCC(T1 x, T2 y, T3 z) { this->x = x; this->y = y; this->z = z; }
void Print() { cout << x << ',' << y << ',' << z << endl; }
};
int main()
{
CCC <int, int, int> c1(10, 20, 30);
CCC <double, double, double> c2(3.5, 5.5, 200.4);
CCC <char, std::string, int> c3('I', "Love You!", 6);
c1.Print();
c2.Print();
c3.Print();
return 0;
}
출처 : https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA/playlists, C++ 프로그래밍 강의 - 한성현 교수님
'C++' 카테고리의 다른 글
C++ 프로그래밍 14주차 정리 (0) | 2022.12.28 |
---|---|
C++ 프로그래밍 12주차 정리 (0) | 2022.12.25 |
C++ 프로그래밍 11주차 정리 (0) | 2022.12.23 |
C++ 프로그래밍 10주차 정리 (0) | 2022.12.22 |
C++ 프로그래밍 7-9주차 정리 (0) | 2022.11.21 |