初识 C++:类和对象(零基础友好版)
C++ 是面向对象编程(OOP)的经典代表语言,而类(class)和对象(object)是面向对象编程最核心、最基础的概念。
1. 类和对象到底是什么?(用生活比喻)
想象你去买手机:
- 类(class) → 手机的设计图纸 / 蓝图
它定义了手机长什么样、有哪些功能(屏幕大小、摄像头、电池容量、打电话、拍照等) - 对象(object) → 根据设计图纸实际生产出来的每一台手机
iPhone 16 Pro Max 是类 → 你手里正在用的那台 iPhone 16 Pro Max 就是对象
一句话总结:
类是抽象的模板/蓝图,对象是根据模板创建的具体实例。
2. C++ 中如何定义一个类(最简单写法)
#include <iostream>
#include <string>
using namespace std;
// 定义一个类(模板)
class Student {
public: // 访问权限:public 表示外部可以直接访问
// 成员变量(属性、数据)
string name; // 姓名
int age; // 年龄
double score; // 分数
// 成员函数(行为、方法)
void introduce() {
cout << "我叫" << name
<< ",今年" << age
<< "岁,这次考试得了" << score << "分!" << endl;
}
};
关键点解释:
class关键字定义类(也可以用struct,后面会讲区别)- 类里面可以放:
- 成员变量(数据) → 相当于对象的“状态”
- 成员函数(方法) → 相当于对象能“做什么”
public:目前先理解为“让外面的人能看到、能用这些成员”
3. 如何创建对象(实例化)
int main() {
// 创建对象(实例化)——方式1:栈上创建(最常用)
Student s1; // s1 是一个 Student 类型的对象
s1.name = "张三";
s1.age = 18;
s1.score = 92.5;
// 调用成员函数
s1.introduce();
// 方式2:堆上创建(需要手动 delete)
Student* s2 = new Student();
s2->name = "李四";
s2->age = 19;
s2->score = 88.0;
s2->introduce();
delete s2; // 不要忘记释放!
return 0;
}
两种创建方式对比:
| 方式 | 语法 | 内存位置 | 生命周期 | 访问方式 | 是否需要 delete |
|---|---|---|---|---|---|
| 栈上创建 | Student s1; | 栈 | 作用域结束自动销毁 | 点 . | 不用 |
| 堆上创建 | new Student() | 堆 | 手动 delete 前都存在 | 箭头 -> | 必须 |
推荐:初学阶段优先使用栈上创建,更安全、更简单。
4. 再加点料:带参数的成员函数
class Student {
public:
string name;
int age;
double score;
// 成员函数可以带参数
void setInfo(string n, int a, double s) {
name = n;
age = a;
score = s;
}
void introduce() {
cout << "我叫" << name << "," << age << "岁,分数:" << score << endl;
}
};
int main() {
Student s;
s.setInfo("王五", 17, 95.5);
s.introduce();
return 0;
}
5. class 和 struct 的区别(常见面试题)
| 特性 | class | struct |
|---|---|---|
| 默认访问权限 | private(私有) | public(公有) |
| 继承时默认方式 | private 继承 | public 继承 |
| 现代 C++ 习惯 | 用于需要封装的复杂对象 | 用于简单的数据聚合(POD 类型) |
| 写法推荐 | 写类用 class | 写简单结构体用 struct |
现代写法建议:
- 需要封装(隐藏实现细节)→ 用
class - 只是简单的数据容器 → 用
struct
6. 目前最容易犯的几个错(新手雷区)
- 忘记写
public:
→ 成员默认是 private,外面访问不了 - 类定义后面忘记加分号
;
class Student { ... } // 正确
class Student { ... } // 错误!漏分号
- 对象没初始化就使用
→ 成员变量可能是随机值(尤其是基本类型) - 混淆
.和->
- 对象本身用
. - 指针用
->
7. 小练习(自己动手写一写)
请你定义一个 Car 类,包含:
- 成员变量:brand(品牌 string)、price(价格 double)、speed(当前速度 int)
- 成员函数:
void setInfo(string b, double p)void accelerate(int add)→ 速度增加 addvoid show()→ 输出品牌、价格、当前速度
然后在 main 中创建一辆车,设置信息,加速几次,最后展示信息。
下一步要学什么?
掌握了最基础的类和对象后,接下来强烈建议按这个顺序继续:
- 构造函数(3 种常见:默认、有参、拷贝)
- 析构函数(对象销毁时自动调用)
- this 指针
- 封装(private + getter/setter)
- 初始化列表
- 友元(friend)
- 静态成员(static)
- 对象数组 / 深拷贝 vs 浅拷贝
类和对象是 C++ 的灵魂,多写、多 debug 是最快的进步方式。
有代码写不出来、报错看不懂,或者想看完整的小练习答案,随时告诉我,我帮你一步步分析和完善!