与“成员变量”相关的TAG标签
虚函数是C++唯一原生运行时多态机制,通过vtable/vptr实现动态绑定;析构函数必须virtual以防资源泄漏;override强制校验重写签名,构造中调用虚函数无效。
static局部变量首次执行到定义语句时才初始化,而非程序启动时;全局static变量分零初始化和动态初始化两阶段,跨翻译单元初始化顺序未定义。
静态成员函数只能通过类名或对象调用,不依赖this,故不能访问非静态成员;静态成员变量需在类外定义(const整型和C++17inlinestatic除外);静态函数不可为virtual;其生命周期全局,线程安全与初始化顺序需手动管理。
shared_ptr的引用计数是原子的,但仅保证同一shared_ptr对象的拷贝/赋值/析构线程安全;其指向资源的访问仍需手动同步,且循环引用需用weak_ptr破除。
C++引用在内存中通常不单独占空间,编译器将其优化为原变量别名;仅当需持久化存储(如类成员、全局引用、lambda捕获)时,才隐式使用指针占用内存。
能,struct在C++中可写构造函数,语法语义与class完全一致,仅默认访问权限为public;支持初始化列表、默认成员初始化及const/引用成员初始化,但定义构造函数后将失去聚合类型特性。
functor是重载了operator()的类,可像函数一样调用且带有状态;如Adder(5)(10)返回15,它非函数指针也非lambda,但支持内联优化与模板推导,适用于需携带不变数据的泛型场景。
const引用传参能避免拷贝,因其是原对象别名,不触发拷贝构造且为语言语义保证;适合大型或不可移动对象的只读访问,但小型类型传值更高效。
std::invoke是统一调用可调用对象的标准接口,自动适配普通函数、成员函数指针、成员变量指针、lambda和functor等不同语法,支持SFINAE友好泛型编程,无运行时开销。
会出问题。成员初始化顺序只取决于类内声明顺序,与初始化列表书写顺序无关;若依赖未初始化成员将导致未定义行为。
