반응형
객체 포인터 변수란,
객체의 주소 값을 저장하는 포인터 변수이다.
포인터 변수 선언과 객체 참조 방법
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 클래스가 있다고 하고 그 클래스를 참조하여 보면
class Person
{
};
class Student : public Person
{
};
class PartTimeStudent : public Student
{
};
int main()
{
Person* ptr;
ptr = new PartTimeStudent();
}
여기서 Person 클래스와 PartTimeStudent 클래스의 관계를 간접 상속이라고 한다. 왜냐하면 PartTimeStudent 클래스는 Person 클래스를 작접 상속하지는 않지만, 간접 적인 관계로 상속을 하고 있기 때문이다.
class Person
{
public:
void Sleep() { cout << "Sleep" << endl; }
};
class Student : public Person
{
public:
void Study() { cout << "Study" << endl; }
};
class PartTimeStudent : public Student
{
public:
void Work() { cout << "Work" << endl; }
};
int main()
{
Person* ptr1 = new Student();
Person* ptr2 = new PartTimeStudent();
Student* ptr3 = new PartTimeStudent();
ptr1->Sleep();
ptr2->Sleep();
ptr3->Study();
delete ptr1;
delete ptr2;
delete ptr3;
}
객체 포인터를 이해하기 위한 코드이다.
Person 클래스로 생성된 포인터 객체 ptr1, ptr2 는 각 각 Student 클래스와 PartTimeStudent 클래스를 참조하고 있고
Student 클래스로 생성된 포인터 객체 ptr3는 PartTimeStudent 클래스를 참조하고 있다.
하지만 본래 생성시 사용된 자료형 클래스 (Person, Student, PartTimeStudent) 에서 정의된 함수만 사용이 가능하다.
반응형
'c++ > 상속과 다형성' 카테고리의 다른 글
[C++] 가상함수의 사용 (0) | 2023.01.16 |
---|