
或引用
静态绑定在编译期确定函数调用目标,依据声明类型、函数签名和作用域,适用于非虚函数、重载、模板、static成员、全局函数及构造函数等场景。
虚函数调用需满足三条件:函数声明为virtual、通过基类指针或引用调用、对象为多态类型;运行时通过vptr查vtable实现动态分发,构造/析构中调用虚函数不触发多态。
C++中继承用:语法实现,多态依赖virtual函数和基类指针/引用调用;公有继承保持访问级别,派生类不继承构造函数、析构函数、赋值运算符和友元函数。
对象构造顺序为从基类到派生类、再至成员对象(按声明顺序),析构则严格逆序;组合中成员生命周期由宿主完全控制,继承与组合混合时仍遵循“基类先于成员、声明序定成员序”规则。
虚函数实现运行时多态,通过vtable和vptr支持动态绑定;纯虚函数定义抽象接口;析构函数通常须声明为virtual以防内存泄漏。
std::function可替代函数指针和虚函数但有性能开销;声明需严格匹配签名;传参宜用const引用避免拷贝和悬挂;与bind、lambda组合时需警惕生命周期和捕获问题。
协变返回类型允许派生类虚函数返回基类返回类型的派生类指针或引用,需满足:同名、同参数、同cv限定、同指针/引用类别、公有继承;不支持值类型和智能指针。
虚函数通过vtable和vptr实现运行时多态,基类指针调用派生类函数;virtual声明虚函数,override确保正确重写,防止签名错误。
只有通过基类指针或引用调用virtual函数才触发动态绑定;直接用对象名调用为静态绑定;virtual须显式写在基类声明前;函数签名须严格匹配;构造函数不能为虚,析构函数应为virtual;每个含虚函...
虚函数必须在基类中用virtual显式声明,否则不触发动态绑定;纯虚函数使类成为抽象类;析构函数需virtual以防资源泄漏;多态须通过指针或引用,避免对象切片;vtable和vptr实现动态绑定;o...