[C++]포인터 객체

jh Seo·2022년 7월 19일
1

C++공부

목록 보기
12/21

평소 포인터에 대해 헷갈리고 있었는데,
이 예제를 본 후 delete의 기능에 대해 이해할 수 있었다.

#include<iostream>

using namespace std;

class Person {
public:
    virtual void Walk() {
        cout<<  "걷는 중입니다."<<  endl;
    }

};

class Student : public Person
{
public:
   void Walk() {
     cout <<"뛰는 중입니다." << endl;
   }

};
int main()
{
    Person* ptr = new Person();
    ptr -> Walk();
    delete ptr;

    ptr = new Student();
    ptr -> Walk();
    delete ptr;


    return 0;
}

student 클래스가 person클래스를 상속받는 상황이다.
main함수에서 객체 포인터 ptr는 person클래스를 가리킨다.

그 후 person클래스의 walk()함수를 실행시킨 후,
delete ptr; 을 실행한다.

여기서 포인터 ptr을 다시 Student * ptr이나
Person * ptr 선언을 안 해주고
ptr=new Student();로 student를 참조하는 부분이
아리송했었다.

헷갈린 부분은 delete ptr;에서 ptr도 함께 지워지는게
아닌가? 라는 생각이 들었던 것인데,
답은 아니다.

delete ptr;을 실행하면 ptr이 가리키는 객체를
삭제하는 것이지 ptr이 삭제되는 게 아니다.

레퍼런스

[글 링크]

profile
코딩 창고!

0개의 댓글