C++入门系列最后一篇。类把数据以及操作这些数据的函数打包成单一单元——这是面向对象编程的核心。
什么是类#
类是蓝图。对象是根据蓝图创建的具体实例。
#include <iostream>
#include <string>
class Player {
public:
std::string name;
int level = 1;
void greet() const {
std::cout << "Hello, I am " << name << " (level " << level << ").\n";
}
};
int main() {
Player p; // 对象
p.name = "Ada";
p.level = 5;
p.greet(); // Hello, I am Ada (level 5).
}cpp访问修饰符#
public:— 任何地方都能访问。private:— 只能在类内部访问。
数据通常设为 private,用 public 成员函数作为接口。这就是封装。
class Counter {
private:
int count = 0;
public:
void increment() { ++count; }
int get() const { return count; }
};cpp外部代码不能直接触碰 count,必须通过 increment() 和 get()。
构造函数#
构造函数在创建对象时运行。它与类同名,没有返回类型:
class Player {
public:
std::string name;
int level;
Player(std::string n, int l) : name(n), level(l) {}
};cpp成员初始化列表 : name(n), level(l) 设置成员变量。现在创建对象需要参数:
Player p("Ada", 5);cpp方法#
在类内声明的成员函数作用于该对象。末尾的 const 承诺这个方法不会修改对象:
int getLevel() const { return level; }cpp实践中的封装#
class BankAccount {
private:
double balance = 0;
public:
void deposit(double amount) {
if (amount > 0) balance += amount;
}
double getBalance() const { return balance; }
};cpp余额无法从外部被设为负数——类自己掌控数据。
结论#
至此,C++入门系列全部结束:第一个程序、变量与类型、控制流、函数、指针与引用,再到类。用每个概念写点小程序,继续前进——标准库和STL是顺理成章的下一步。