C++ 子类向上转型:安全转换到父类
在 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;
}
在上面的例子中,Student 是 Person 的子类,通过将 Student 对象赋值给 Person 的引用,可以将 Student 对象向上转型为 Person 类型。在调用 p.sayHello() 时,会调用 Student 类中的 sayHello() 函数,因为 p 指向的是一个 Student 对象。
需要注意的是,向上转型只能将子类转换为其直接或间接父类,不能将父类转换为子类。如果需要将父类转换为子类,可以使用向下转型(downcasting),但是需要注意类型转换的安全性。
原文地址: https://www.cveoy.top/t/topic/nsLf 著作权归作者所有。请勿转载和采集!