Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++ static_cast

作者:角落里哭泣   发布日期:2025-04-04   浏览:130

#include <iostream>

class Base {
public:
    virtual void show() {
        std::cout << "Base class" << std::endl;
    }
};

class Derived : public Base {
public:
    void show() override {
        std::cout << "Derived class" << std::endl;
    }
};

int main() {
    Base* basePtr = new Base();
    Derived* derivedPtr = static_cast<Derived*>(basePtr);  // 这里使用 static_cast 将基类指针转换为派生类指针

    if (derivedPtr != nullptr) {
        derivedPtr->show();  // 如果转换成功,调用派生类的 show 方法
    } else {
        std::cout << "Conversion failed" << std::endl;
    }

    delete basePtr;
    return 0;
}

解释说明:

  • static_cast 是 C++ 中用于在相关类型之间进行显式类型转换的关键字。
  • 在这个例子中,我们尝试将一个 Base 类型的指针 basePtr 转换为 Derived 类型的指针 derivedPtr
  • static_cast 不会检查运行时类型信息,因此如果 basePtr 实际上并不指向一个 Derived 对象,那么这种转换是不安全的。在这个例子中,由于 basePtr 确实指向的是 Base 对象而不是 Derived 对象,所以转换会失败(但不会抛出异常)。
  • 因此,在实际使用中,应该确保转换的安全性,或者使用 dynamic_cast 进行更安全的类型检查。

上一篇:c++ delete

下一篇:c++ continue

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++freopen怎么用

c++ 获取系统时间

c++进制转换函数

c++ tcp

c++ gcd函数

c++ cli

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站