21xrx.com
2024-11-22 10:05:24 Friday
登录
文章检索 我的文章 写文章
C++中如何将子类转换为父类?
2023-07-04 22:20:17 深夜i     --     --
C++ 子类 父类 转换 继承

在C++中,子类对象通常都可以转换为父类对象。这种类型转换被称为“向上造型”(upcasting),因为它将子类“向上”提升为父类。

向上造型的语法非常简单。只需要将子类对象的指针或引用赋值给父类指针或引用,即可完成转换。比如,假设有一个名为Animal的父类,和一个名为Dog的子类。


class Animal {

public:

  virtual void speak()

    cout << "I am an animal." << endl;

  

};

class Dog : public Animal {

public:

  void speak()

    cout << "I am a dog." << endl;

  

};

如果要将Dog对象转换为Animal对象,只需要这样做:


Dog d;

Animal& a = d; // 或 Animal* a = &d;

在这个例子中,d是一个Dog对象,a是一个Animal引用。通过将d赋值给a,编译器会自动把它转换为Animal类型的引用。这样就可以调用Animal类中的方法了。

这种类型转换有何意义呢?为什么要将子类转换为父类呢?答案很简单:多态。多态是面向对象编程中非常重要的概念,它允许程序在运行时动态地选择不同的实现方式。如果我们有一个指向Animal对象的指针,但实际上它指向的是一个Dog对象,那么我们可以在运行时调用Dog类中的方法,这就是多态的体现。

  
  

评论区

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