贝利信息

C++类和对象怎么理解 C++面向对象编程核心概念图解【干货】

日期:2026-01-26 00:00 / 作者:尼克
类是编译器识别的内存布局规则与函数绑定约定,本质为结构体加vtable语法糖;空类sizeof为1,含虚函数则至少8字节;对象内存位置决定生命周期,this是隐式传入的常量指针。

类和对象不是“抽象”和“具体”的哲学对

应,而是编译器能识别的内存布局规则 + 函数绑定约定。

类本质是结构体加函数指针表(vtable)的语法糖

C++ 类在内存中没有独立存在形式——它只是编译器用来组织数据和函数的一套规则。普通成员函数不占用对象内存,只有非静态数据成员才真实占据空间;虚函数会触发编译器生成 vtable,并在每个对象开头隐式插入一个 vptr 指针(大小通常为 8 字节,在 64 位系统上)。

对象创建时发生了什么:栈/堆/静态区决定生命周期,而非“new”关键字

是否用 new 不代表“是不是对象”,只决定内存分配位置和析构时机。

成员函数隐含 this 指针,但不是“属于对象”的证据

this 是编译器自动传入的常量指针(类型为 A* const),它让成员函数能访问当前对象的数据,但它本身不存储在对象内部。

立即学习“C++免费学习笔记(深入)”;

真正容易被忽略的点:类定义阶段不分配内存,对象定义才触发构造;而继承关系中的内存布局(比如虚基类偏移)、std::move 后对象状态、以及 constexpr 构造函数对编译期求值的影响,才是实际编码中踩坑最多的地方。