본문 바로가기

함수 오버라이딩

순수 가상 함수와 추상 클래스 순수 가상 함수 와 추상클래스 순수 가상 함수란? 함수 오버라이딩을 한후 Base class 의 은닉된 함수를 완전히 가리기 위하여 virtual 키워드로 함수부를 완전히 가리게 된다. 하지만 함수의 바디(body) 부분을 여전히 기제를 해야하는데 이는 실로 엄청나게 번거로운 방법이고 코드도 늘어가게 된다. 실행도 되지 않는 함수때문에 함수의 몸체 부분을 (return 문장만 쓰더라도 블럭을 잡아야 하니까 ) 모두 기제해줘야 하기 때문이다. 그래서 virtual void a() = 0; 와 같은 형식으로 해더 부분을 변경하여 코드를 작성하면 컴파일은 이 함수가 가상 함수라는걸 알고 제어를 오버라이딩 된곳으로 바로 옴기게 된다. 이때 이 함수를 순수 가상 함수라고 한다. 왜냐하면 함수의 몸체가 없기때문에 .. 더보기
virtual 함수 virtual 함수 virtual 함수란 말그대로 가상의 함수이다. 가상이란 실제로 없는데 있는척 훼이크 쓰는거다. virtual 함수는 함수 오버라이딩이 반드시 있어야 하는데 간단하게 오버라이딩을 해보면.. #include class AAA { public: void a() { cout 더보기
함수 오버라이딩 함수 오버라이딩 함수 오버라이딩은 많은 사람들이 재정의 로 알고 있는데 함수 오버라이딩 = 재정의 라는 이론은 잘못된 생각이다. 그 이유를 함께 알아보자!...ㅋㅋㅋㅋㅋ AAA클래스가 있고 BBB클래스가 AAA클래스를 상속 받았다고 가정하자. AAA클래스에 a() 라는 함수가 있는데 이를 BBB클래스에 a() 함수를 다시 만들게 되면 'AAA클래스의 a()함수는 BBB클래스에 의해서 오버라이딩 되었다' 라고 표현한다. 그리고 이때 Base class 의 AAA에 있는 a() 함수는 BBB클래스에 의해서 '은닉 되었다' 라고 표현한다. 이를 소스로 본다면..... class AAA { public: void a() { cout 더보기