21xrx.com
2025-04-10 23:19:09 Thursday
文章检索 我的文章 写文章
使用C++:将子类对象赋值给父类对象
2023-07-05 08:38:19 深夜i     20     0
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++编程技巧。通过父类引用或指针,我们可以很方便地访问子类的方法和属性,从而实现更加灵活的程序设计。

  
  

评论区