1. 从C到C++:理解代码封装的思想演进
作为一名从C语言转向C++开发的程序员,我深刻体会到两种语言在设计理念上的差异。C语言作为面向过程的编程语言,其核心思想是函数和数据的分离。而C++引入了面向对象编程(OOP)的概念,其中"类"是最重要的创新之一。
1.1 C语言结构体的局限性
在C语言中,我们使用结构体(struct)来组织相关数据。例如,实现一个栈数据结构:
c复制struct Stack {
int* data;
int top;
int capacity;
};
void StackInit(struct Stack* ps);
void StackPush(struct Stack* ps, int x);
int StackPop(struct Stack* ps);
这种设计存在几个明显问题:
- 每次使用Stack类型都需要加上struct关键字,代码显得冗长
- 数据和方法是分离的,容易造成命名冲突
- 无法控制对结构体成员的访问权限
提示:虽然可以通过typedef简化类型名称,但这只是语法糖,没有解决根本问题。
1.2 C++类的革命性改进
C++的类可以看作是结构体的增强版,它解决了上述所有问题。下面是C++中Stack类的定义:
cpp复制class Stack {
private:
int* _data;
int _top;
int _capacity;
public:
void Init();
void Push(int x);
int Pop();
};
关键改进点:
- 类名直接作为类型名使用,无需额外关键字
- 数据和方法封装在同一个作用域内
- 通过访问限定符控制成员的可见性
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 深入解析C++类的定义与封装
2.1 类定义的基本语法
C++中类定义的标准格式如下:
cpp复制class ClassName {
// 成员变量和成员函数
}; // 注意这个分号不能省略
与命名空间定义不同,类定义末尾必须加分号。这是因为类定义实际上是在声明一个新类型,而命名空间只是定义了一个作用域。
