您好,欢迎访问宜昌市隼壹珍商贸有限公司
400 890 5375
当前位置: 主页C++中继承用:语法实现,多态依赖virtual函数和基类指针/引用调用;公有继承保持访问级别,派生类不继承构造函数、析构函数、赋值运算符和友元函数。
协变返回类型允许派生类虚函数返回基类返回类型的派生类指针或引用,需满足:同名、同参数、同cv限定、同指针/引用类别、公有继承;不支持值类型和智能指针。
virtual继承使派生类共享同一基类子对象,解决菱形继承中因B、C各自继承A导致D含两份A而引发的二义性、内存浪费等问题;需由最派生类D显式构造虚基类A,带来间接访问开销与复杂初始化顺序。
CRTP是编译期静态多态技术,通过模板参数传递派生类类型实现零开销调用;传统继承是面向对象机制,可支持动态多态(需虚函数)或纯代码复用,二者本质不同。
C++异常处理依靠try、catch、throw实现,需成对使用,支持类型匹配与RAII资源管理,适用于意外可恢复错误,不推荐替代常规控制流。
对象表示是对象在内存中由有效成员字节与对齐用padding字节构成的可复制字节序列,不含paddingbits、vptr等实现细节,决定memcpy、ABI及序列化行为。
封装将数据和操作打包在类中,通过访问控制保护内部细节;2.继承支持派生类复用基类成员,建立类层次结构;3.多态允许同一接口调用不同实现,提升代码灵活性。
std::shared_from_this用于已由shared_ptr管理的对象安全获取共享引用计数的shared_ptr;直接newshared_ptr(this)会创建独立控制块导致双重析构;必须公有继承enable_shared_from_this,并确保对象已被shared_ptr持有后才能调用。
C++面向对象的三大特性是封装、继承和多态。封装通过信息隐藏与访问控制(private/public/protected)解决数据可见性与修改权限问题;继承以公有方式表达“is-a”关系,确立类型层级并规定构造/析构顺序;多态依赖虚函数、指针或引用实现运行时动态绑定,要求基类析构函数为virtual以防资源泄漏。
std::is_pointer_interconvertible_base_of_v为true当且仅当Base是非虚非空基类且与Derived起始地址重合;用于判断指针可互换性以支持安全reinterpret_cast、memcpy等底层操作,常见于EBO、标准布局类型及序列化框架。
公有继承保持基类成员访问权限,表达“is-a”关系,派生类对象可访问基类public成员;保护继承将基类public和protected成员变为protected,限制外部访问;私有继承将其变为private,完全隐藏基类接口,用于实现复用而非类型继承。
协变保持类型转换方向,如D可转为B,引用和虚函数返回指针支持协变;逆变反转方向,C++函数参数不支持;模板默认不变,需手动处理类型转换。