21xrx.com
2024-12-22 21:14:22 Sunday
登录
文章检索 我的文章 写文章
使用C++:将子类对象赋值给父类对象
2023-07-05 08:38:19 深夜i     --     --
C++ 子类对象 父类对象 赋值 多态

在C++编程中,我们经常需要使用继承来创建类层级结构。在继承中,子类是从父类继承而来的,也就是说,子类拥有父类的方法和属性。但是,在一些情况下,我们需要将子类对象赋值给父类对象,这时就需要使用父类引用或指针来访问子类对象。

下面是如何将子类对象赋值给父类对象的示例:


#include <iostream>

using namespace std;

class Animal {

public:

  virtual void makeSound()

    cout << "Animal sound" << endl;

  

};

class Cat : public Animal {

public:

  void makeSound()

    cout << "Meow" << endl;

  

};

class Dog : public Animal {

public:

  void makeSound()

    cout << "Woof" << endl;

  

};

int main() {

  Cat cat;

  Dog dog;

  Animal& animal1 = cat; // 用Cat对象初始化Animal引用

  Animal* animal2 = &dog; // 用Dog对象的地址初始化Animal指针

  animal1.makeSound(); // 输出Meow

  animal2->makeSound(); // 输出Woof

  return 0;

}

在这个示例中,我们定义了一个Animal类和两个子类Cat和Dog。每个类都有一个名为makeSound的方法,但是子类方法覆盖了父类方法。在主函数中,我们分别创建了一个Cat对象和一个Dog对象,并将它们分别赋值给一个Animal引用和一个Animal指针。此时,我们可以看到,通过父类引用和指针,我们可以轻松地访问子类方法。

需要注意的是,定义父类引用或指针时需要加上virtual关键字,以便在运行时动态绑定(在本示例中,父类的makeSound方法被标记为虚函数,因此子类的makeSound方法会动态绑定到父类引用和指针上)。

总之,将子类对象赋值给父类对象是一种很常用的C++编程技巧。通过父类引用或指针,我们可以很方便地访问子类的方法和属性,从而实现更加灵活的程序设计。

  
  

评论区

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