21xrx.com
2024-06-03 09:35:10 Monday
登录
文章检索 我的文章 写文章
C++中如何使用父类指针指向子类对象并调用方法
2023-07-01 05:16:22 深夜i     --     --
C++ 父类指针 子类对象 调用方法

在C++中,通过父类指针指向子类对象并调用方法可以实现多态性的应用。这种方法可以大大提高代码的重用性和可扩展性。下面我们来看看如何在C++中使用父类指针指向子类对象并调用方法。

首先,我们需要定义一个父类和一个或多个子类。父类是通用的,而子类是特定的。子类继承了父类的公有方法和属性,并可以根据自己的需求来实现自己的方法和属性。例如:


class Shape {

  public:

    virtual void draw() = 0;

};

class Circle: public Shape {

  public:

    void draw()

      cout << "Draw a Circle." << endl;

    

};

class Square: public Shape {

  public:

    void draw()

      cout << "Draw a Square." << endl;

    

};

在以上示例中,Shape是父类,Circle和Square是子类。Shape中有一个纯虚函数draw(),在Circle和Square中对该函数进行了实现。

接着,我们可以使用父类指针来指向子类对象并调用方法。要使用父类指针指向子类对象,需要满足两个条件:父类中含有虚函数,子类需要对虚函数进行实现。现在,我们创建一个指向Circle对象的Shape指针:


Shape* ptr = new Circle();

在此处定义了一个Shape类型的指针并将其指向Circle类的一个实例。这种类型的父类指针指向子类对象的方法成为向上转型。在此转型后,我们可以调用父类的draw()方法来调用子类的同一方法:


ptr->draw();

运行以上代码将输出“Draw a Circle.”,这是因为Shape指针指向的对象是Circle类型,所以调用的是Circle类中的draw()方法。

同样的,我们可以使用该指针来指向Square类的一个实例:


ptr = new Square();

ptr->draw();

运行以上代码将输出“Draw a Square。”。这是因为父类指针也可以指向其他子类对象,只要该子类实现了draw()方法。

在C++中,使用父类指针指向子类对象并调用方法可以大大提高代码的可扩展性和重用性。通过此方式,可以实现多态性应用,使程序变得更加灵活和可维护。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复