21xrx.com
2024-11-25 00:12:18 Monday
登录
文章检索 我的文章 写文章
如何使用C++基类指针指向子类对象?
2023-07-06 14:28:51 深夜i     --     --
C++ 基类指针 子类对象 继承 多态

在C++语言中,我们可以使用基类指针指向子类对象,这是面向对象编程中一个很常见的需求。但是,如何使用C++基类指针指向子类对象呢?下面我们来详细介绍。

首先,我们需要先定义一个基类和一个或多个继承自该基类的子类。比如说,我们可以定义一个动物基类Animal和两个继承自Animal的子类Cat和Dog。

下面是相关的代码:


class Animal {

  public:

    virtual void speak() = 0;

};

class Cat : public Animal {

  public:

    void speak()

      std::cout << "Meow!" << std::endl;

    

};

class Dog : public Animal {

  public:

    void speak()

      std::cout << "Woof!" << std::endl;

    

};

在这个代码中,我们定义了一个Animal基类,它有一个纯虚函数speak(),表示所有的动物都应该具有发声的能力。然后我们继承了Animal基类,分别定义了两个子类Cat和Dog。子类中实现了speak()函数,分别表示猫和狗的叫声。

接下来,我们可以定义一个指向Animal基类的指针p,并让它指向Cat或Dog的对象。


Animal* p = new Cat();

p->speak(); // 输出"Meow!"

p = new Dog();

p->speak(); // 输出"Woof!"

在这个代码中,我们首先定义了一个指向Animal基类的指针p,然后让它分别指向Cat和Dog的对象。由于Cat和Dog都是Animal的子类,所以它们的对象可以通过指向Animal的指针访问。最后,我们调用speak()函数,输出了每个动物的叫声。

需要注意的是,我们必须要将基类的函数speak()声明为虚函数,这样在通过基类指针调用子类的speak()函数时,会根据对象的实际类型调用正确的函数。否则就会出现只调用基类的函数而不调用子类的函数的情况。

总结来说,使用C++基类指针指向子类对象只需要两个步骤:首先定义一个基类和子类,然后将基类指针指向子类对象即可。同时,我们需要将基类的函数声明为虚函数,以保证调用子类的函数而不是基类的函数。

  
  

评论区

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