热门
最新
红包
立Flag
投票
同城
我的
发布
sweet_123321
2 年前
truesweet_123321
大神们,能不能帮我看看为什么探针测的没问题,但是就是运行不了,运行几秒就跳出这个弹窗(这个是红外倒车雷达的图)
下一条:
2024年12月20日今日C++小知识 —— 虚函数与动态绑定1. 虚函数的概念在 C++ 中,虚函数是通过在基类中声明 virtual 关键字来实现的。虚函数的主要目的是支持运行时多态,即使是通过基类指针或引用调用,程序也能在运行时根据实际对象的类型来确定调用哪个类的成员函数。2. 动态绑定与静态绑定静态绑定(也称为编译时绑定)发生在编译时,编译器决定调用哪个函数。这种方式下,函数调用与对象类型直接相关。动态绑定(也称为运行时绑定)则发生在程序运行时,编译器无法确定调用哪个函数,必须根据对象的实际类型(即实际实例化的类)来决定。虚函数是实现动态绑定的基础。通过虚函数,C++ 可以让基类指针指向派生类对象时,在运行时根据对象的实际类型来决定调用哪一个类的函数。3. 多态性多态是面向对象编程的一个基本特性,它使得不同的对象(即使它们是不同的类)能够以相同的接口进行交互。具体来说,运行时多态是通过虚函数来实现的。在多态性中,基类的指针或引用可以指向派生类的对象,并在调用时执行派生类中重写的函数。4. 纯虚函数与抽象类当一个虚函数在基类中没有实现时,可以声明为纯虚函数。纯虚函数在基类中仅声明,且末尾加上 = 0,表示该函数没有定义,派生类必须提供实现。含有纯虚函数的类称为抽象类,抽象类不能实例化对象。纯虚函数为面向对象设计中的接口提供了标准。它强制所有派生类必须实现特定的功能,而基类则定义了这些功能的接口。5. 虚析构函数在 C++ 中,析构函数的主要作用是清理对象的资源。为了确保在通过基类指针删除派生类对象时,能够正确调用派生类和基类的析构函数,基类的析构函数必须是虚函数。否则,只有基类的析构函数会被调用,派生类的析构函数将不会被执行,从而导致资源泄漏。6. 虚函数与对象切割对象切割是一个常见的 C++ 问题。它发生在将派生类对象赋值给基类对象时,派生类的额外数据和行为会被“切割”掉,只保留基类部分。在这种情况下,虚函数也能起到关键作用。通过虚函数,基类指针仍然能够调用派生类中的方法,避免了对象切割的问题。总结:虚函数和动态绑定使得 C++ 支持运行时多态,允许基类指针或引用调用派生类的函数。虚函数是 C++ 中非常强大且灵活的特性,广泛应用于设计模式、接口抽象、插件系统等多个领域。
立即登录