C++ 8일차

2021. 6. 17. 17:13·C++
반응형

생성자 => 부모생성자 호출->자식생성자 호출

소멸자 => 자식소멸자 호출->부모소멸자 호출

 

부모생성자 호출을 따로 안하면

1.부모 생성자에 매개변수가 필요없는경우 - 암시적 호출로 사용

2.부모 생성자에 매개변수가 들어가야하는경우 - 컴파일 에러

 

다형성(Polymorphism) - 여러 모습으로 변한다

 

정적 바인딩 - 무늬따라 가는것 (C++)

Cat* yourCat = new Cat(5,"Mocha"); - Cat의 멤버함수 따라감

Animal* yourCat = new Cat(5,"Mocha"); - Animal의 멤버함수 따라감

 

위의 방법이 아닌 JAVA형식으로 하고싶다면??

다형성의 핵심 - 가상(virtual) 함수

속도 정적(비 가상함수)>동적(가상함수) (실행중 어떤 함수 호출할지 정하기떄문)

 

가상함수를 위해서 가상 테이블이 생성

(가상 테이블이랑 모든 가상 멤버함수의 주소를 포함한다.)

-가상테이블은 클래스에 하나가 존재한다!!

 

객체 생성할 때, 해당 클래스의 가상 테이블 주소 함께 저장

 

virtual 키워드를 생략하면 메모리 누수의 가능성이 매우 높다

 

소멸자를 가상 소멸자로 사용(까먹으면 메모리 누수)

ex)Animal* yourCat = new Cat(5,"Mocha");  - 소멸자 = 메모리 누수, 가상 소멸자 = 해결

 

가상 소멸자는 매우 주용하니까 모든 클래스마다 할 것!!!

-속도는 느려지지만 내가 가상함수 사용을 안한다고 같이 작업하는 사람이 쓰지 않는건 아니다

->혹여나 하는 상황을 해결하기 위해서는 가상 소멸자가 필수!

 

멤버함수의 가상성은 상속된다

class animal

class cat : public animal

class jerry : public cat

 

cat* myCat = new Jerry()

생성자 - animal() cat() jerry() 순서대로 호출

delete myCat;

소멸자 - ~jerry() ~cat() ~animal() 순서대로 호출

 

animal.h에 있는 animal 클래스를 상속받는 cat.h의 cat 클래스는 #include "animal.h"를 해야한다!!

(부모 클래스를 인클루드해야함)->안하면 컴파일러가 부모 클래스의 메모리 레이아웃을 모른다

=>즉, cat부분이 추가적으로 차지하는 바이트를 추가할 수 없다

반응형
저작자표시 (새창열림)

'C++' 카테고리의 다른 글

C++ 10일차  (0) 2021.06.23
C++ 9일차  (0) 2021.06.21
C++ 7일차  (1) 2021.06.13
C++ 6일차  (1) 2021.06.12
C++ 5일차  (0) 2021.06.11
'C++' 카테고리의 다른 글
  • C++ 10일차
  • C++ 9일차
  • C++ 7일차
  • C++ 6일차
숯불돼지왕갈비
숯불돼지왕갈비
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (311) N
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (50)
        • 코딩 테스트 (4)
      • Unreal Engine 5 (25)
        • MMORPG 개발 (25)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (9) N
        • 컴퓨터 활용능력 (8) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
C++ 8일차
상단으로

티스토리툴바