C++ 프로그래밍 13주차 정리

2022. 12. 26. 14:18C++

1. overriding

1.1. overriding의 개념

- overriding: 가상함수의 구현

- 가상함수 구현 시 파생 클래스에서 같은 이름의 함수를 재정의할 수 있다(객체지향 프로그래밍의 다형성 구현)

- 가상함수 구현 후 파생 클래스에서 재정의되는 동일명의 함수는 리턴값, 매개변수 개수, 자료형이 같아야 한다

- 가상함수 구현의 예시

class A {
public:
    virtual int funcA(int n) {//가상함수 정의
        return (n + 1);
    }
};
class B : public A {
    public:
    int funcA(int n) {//재정의
        return (n + 2);
    }
};
 

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