1. C++面向对象编程基础
在C++的世界里,类和对象就像建筑师的蓝图与实体房屋的关系。当我第一次从C语言过渡到C++时,最震撼的就是这种将数据和操作封装在一起的编程范式。类(Class)是创建对象的模板,而对象(Object)则是类的具体实例。这种思维方式彻底改变了我们组织代码的方式。
面向对象编程(OOP)的三大特性在C++中体现得淋漓尽致:封装让我们可以把数据和方法捆绑在一起,继承允许我们建立类的层次结构,多态则让同一操作对不同对象产生不同行为。今天我们就从最基础的类和对象开始,逐步揭开C++面向对象编程的神秘面纱。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 类的定义与实现
2.1 类的基本结构
一个典型的C++类定义如下所示:
cpp复制class Student {
private:
std::string name;
int age;
public:
void setName(const std::string& newName) {
name = newName;
}
std::string getName() const {
return name;
}
void displayInfo() const {
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
};
这里有几个关键点需要注意:
class关键字用于声明一个类- 访问修饰符
private和public控制成员的可见性 - 成员变量通常放在private区域以实现封装
- 成员函数提供操作数据的接口
经验之谈:养成将成员变量设为private的习惯,这是良好封装的第一步。我见过太多项目因为早期图省事直接public成员变量,后期维护时苦不堪言。
2.2 访问控制与封装
C++提供了三种访问修饰符:
public:在任何地方都可以访问private:仅类内成员函数可以访问protected:类内和派生类可以访问
封装是OOP的基石,它有两个主要优点:
- 数据保护:防止外部代码直接修改对象内部状态
- 实现隐藏:类的使用者不需要知道内部实现细节
在实际项目中,我通常会遵循这样的原则:
- 所有数据成员设为private
- 仅暴露必要的方法为public
- 派生类可能需要访问的成员设为protected
3. 对象的创建与使用
3.1 实例化对象
创建类的对象有多种方式,每种都有其适用场景:
cpp复制// 栈上分配(自动管理内存)
Student stu1;
// 堆上分配(需要手动管理内存)
Student* stu2 = new Student();
// 使用后不要忘记delete
delete stu2;
// C++11之后的统一初始化语法
Student stu3{"Alice", 20};
3.2 成员访问
对于普通对象使用点运算符,对于指针对象使用箭头运算符:
cpp复制stu1.setName("Bob");
stu2->setName("Charlie");
std::cout << s
