반응형

c++/상속과 다형성 2

[C++] 가상함수의 사용

클래스의 상속관계에서 부모의 함수를 오버라이딩 하여 사용할 때가 있습니다. 만약 그 함수의 객체를 포인터로 만들었을 때 문제가 생길 수 있습니다. 다음의 코드를 보면서 이해해 보겠습니다. class First { public: void SimpleFunc() { cout ptr2 ( ptr3 -> Third 클래스 ) 가 됩니다. 하지만 SimpleFunc() 함수는 각각 생성된 클래스에 있는 함수가 불러와졌습니다. 문제없이 출력이 된것처럼 보이지만 사실 논리상 맞지 않습니다. 이러한 로직 에러를 방지하기 위해 C++에 있는 개념이 가상함수입니다. 예를 통해서 가상함수에 사용을 확인해 보겠습니다. class First { public: virtual void SimpleFunc() { cout

[C++] 객체 포인터의 참조관계

객체 포인터 변수란, 객체의 주소 값을 저장하는 포인터 변수이다. 포인터 변수 선언과 객체 참조 방법 class Person { }; class Student : public Person { }; int main() { Person* ptr; ptr = new Person(); } 그런데 Person형 포인터느느 Person 객체뿐만 아니라, Person을 상속하는 유도 클래스( 즉, 자식 클래스) 또한 가리킬 수 있다. class Person { }; class Student : public Person { }; int main() { Person* ptr; ptr = new Student(); } 그리고 Student 클래스를 부모 클래스로 둔 ParttimeStudent 클래스가 있다고 하고 그 클..

반응형