在进行强制类型转换时,应该先判断当前对象是否为父类的派生类实例,否则会出现类型转换错误的问题。示例如下:
class Animal { public: virtual void eat() = 0; };
class Dog : public Animal { public: void eat() override { std::cout << "狗在吃东西\n"; } void bark() { std::cout << "汪汪汪\n"; } };
int main() {
Animal* animal = new Dog(); //创建Dog实例并用Animal指针指向
//下面两种强制类型转换方式都可以将派生实例转换为父类实例
//但第二种会出现类型转换错误的问题
Dog* dog_ptr1 = static_cast
上一篇:编译器将类型字符随机转换为整数。