언어/C++

8. 상속과 다형성

에린_1 2023. 1. 26. 22:25
728x90
  • 객체 포인터 변수 : 객체의 주소 값을 저장하는 포인터 변수
    • 클래스 포인터는 포인터 객체뿐만 아니라, 클래스를 상속하는 유도 클래스의 객체도 가리킬 수 있다
    • C++에서, AAA형 포인터 변수는 AAA 객체 또는 AAA를 직접 혹은 간접적으로 상속하는 모든 객체를 가리킬 수 있다.(객체의 주소 값을 저장할 수 있다.)

 

  • 함수 오버라이딩(Function Overriding) - 함수 재정의
    • 오버라이딩이 된 기초 클래스의 함수는, 오버라이딩을 한 유도 클래스의 함수에 가려진다.

 

 

  • C++ 컴파일러는 포인터 연산의 가능성 여부를 판단 할 때, 포인터의 자료형을 기준으로 판단하지, 실제 가리키는 객체의 자료형을 기준으로 판단하지 않는다.

 

  • 포인터 형에 해당하는 클래스에 정의된 멤버에만 접근이 가능하다.

 

  • 가상함수의 선언은 virtual 키워드의 선언을 통해서 이루어진다. 이렇게 선언되고 나면, 이 함수를 오버라이딩 하는 함수도 가상함수가 된다.

 

  • 함수가 가상함수로 선언되면, 해당 함수호출 시, 포인터의 자료형을 기반으로 호출대상을 결정하지 않고, 포인터 변수가 실제로 가리키는 객체를 참조하여 호출의 대상을 결정한다.

 

  • 클래스 중에서는 객체생성을 목적으로 정의되지 않는 클래스도 존재한다.

 

 

  • ‘순수 가상함수’ 란 ‘함수의 몸체가 정의되지 않은 함수’ 를 의미한다
    • 이를 표현하기 위해 ‘0의 대입’을 표시한다
    • 0의 대입을 의미하는 것이 아니고 ‘명시적으로 몸체를 정의하지 않았음’을 컴파일러에게 알리는것

 

 

  • 다형성(Polymorphism)
    • 모습은 같은데 형태는 다르다
    • 문장은 같은데 결과는 다르다
728x90

'언어 > C++' 카테고리의 다른 글

9. 연산자 오버로딩  (0) 2023.02.02
가상(Virtual)의 원리와 다중상속  (0) 2023.01.31
7. 상속(Inheritance)의 이해  (0) 2023.01.26
6. 클래스의 완성  (0) 2023.01.19
5. 연산자 다중정의  (0) 2023.01.17