在 C++ 中,子类可以向父类进行类型转换,这通常被称为向上转型(upcasting)。向上转型是安全的,因为子类是父类的一种类型,可以直接赋值给父类对象。

以下是一个示例:

class Person {
public:
    virtual void sayHello() {
        std::cout << 'Hello, I'm a person.' << std::endl;
    }
};

class Student : public Person {
public:
    void sayHello() override {
        std::cout << 'Hello, I'm a student.' << std::endl;
    }
};

int main() {
    Student s;
    Person& p = s; // 向上转型
    p.sayHello(); // 输出:Hello, I'm a student.
    return 0;
}

在上面的例子中,StudentPerson 的子类,通过将 Student 对象赋值给 Person 的引用,可以将 Student 对象向上转型为 Person 类型。在调用 p.sayHello() 时,会调用 Student 类中的 sayHello() 函数,因为 p 指向的是一个 Student 对象。

需要注意的是,向上转型只能将子类转换为其直接或间接父类,不能将父类转换为子类。如果需要将父类转换为子类,可以使用向下转型(downcasting),但是需要注意类型转换的安全性。

C++ 子类向上转型:安全转换到父类

原文地址: https://www.cveoy.top/t/topic/nsLf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录