C++ 类与对象:封装、实例化与 this 指针详解
引言
类是 C++ 面向对象编程的核心,实现了数据与方法的封装,其定义、访问限定与类域规则构成了基础框架。实例化让抽象的类转化为实际内存中的对象,对象大小计算与成员函数存储特性,体现了 C++ 的内存设计逻辑。this 指针解决了成员函数区分对象的关键问题,而 C 与 C++ 实现 Stack 的对比,直观展现了封装带来的优势。
一、类的定义
1.1 基础:说明类的格式
class Stack {
// ...
};
class为定义类的关键字,Stack 为类的名字,{}中为类的主体,最后面加上分号";"。类主体中的内容成为类的成员:类中的变量称为类的属性或者成员变量;类中的函数称为类的方法或者成员函数。- 为了区分成员变量,一般会养成在成员变量加一个特殊的标识的习惯,比如:在变量的前面或者后面加上
_或者m—>_capacity等。但不是 C++ 强制的,只是为了方便操作,不同公司有着自己的书写规范。 - C++ 中
struct也可以定义类,因为 C++ 兼容 C 语言的struct用法,而且 C++ 将其升级成了类。一个明显的变化是 C++ 在struct可以定义函数,注意还是推荐class定义类。 - 定义在类中的函数默认为
inline。(当然,最终还是取决于编译器)
class Stack {
// 成员函数
void Init() {
// ...
}
void Push() {
// ...
}
// 成员变量
int a;
int top;
int capacity;
};
// 与结构体类似,对一种事物的描述--属性
int main() {
Stack s1;
Stack s2;
return 0;
}
在 C++,类与结构体高度相似。其中明显的一个差异是:结构体名称不代表类型,只有当加上 struct 关键字后才是(或者 typedef 简化操作);而类可以直接使用名称,不需要加 class 关键字。
解释第 2 条: 对于命名规范,一般有以下几种:
- 驼峰法:
StackInit(自定义类型、函数) -> 开头单词的首字母大写 + 后续每个单词的首字母都大写; (变量) -> 开头单词的首字母小写 + 后面的每个单词的首字母都大写。


