1. 类:封装数据和行为
类是面向对象编程的核心概念,它允许我们将数据(成员变量)和操作这些数据的函数(成员函数)组合在一起,形成一个独立的单元。这被称为封装。
基本结构:
class ClassName {
public:
// 公有成员(通常是方法)
private:
// 私有成员(通常是数据)
};
代码示例:
#include <iostream>
#include <string>
class Dog {
public:
std::string name;
int age;
// 构造函数
Dog(const std::string& dogName, int dogAge) : name(dogName), age(dogAge) {
std::cout << "小狗 " << name << " 被创建了!" << std::endl;
}
// 析构函数
~Dog() {
std::cout << "小狗 " << name << " 离开了。" << std::endl;
}
void bark() const {
std::cout << "汪汪!我是 " << name << ", " << age << " 岁了!" << std::endl;
}
private:
// 可以添加一些私有成员,例如内部状态
bool is_sleeping = false;
};
int main() {
Dog myDog("Buddy", 3); // 调用构造函数
myDog.bark(); // 调用公有成员函数
// 可以访问公有成员变量
std::cout << "小狗的名字是:" << myDog.name << std::endl;
std::cout << "小狗的年龄是:" << myDog.age << std::endl;
// 无法直接访问私有成员变量
// std::cout << myDog.is_sleeping << std::endl; // 编译错误
return 0; // myDog 对象在这里会被销毁,调用析构函数
}
解释:
class Dog { ... };定义了一个名为Dog的类。public:标记后面的成员可以在类的外部访问。private:标记后面的成员只能在类的内部访问。std::string name;和int age;是Dog类的成员变量,用于存储小狗的名字和年龄。Dog(const std::string& dogName, int dogAge) : name(dogName), age(dogAge) { ... }是构造函数,它在创建Dog对象时被自动调用,用于初始化对象的成员变量。冒号后面的部分是初始化列表,用于高效地初始化成员变量。~Dog() { ... }是析构函数,它在Dog对象即将被销毁时被自动调用,用于执行清理操作(例如释放资源)。void bark() const { ... }是一个成员函数,表示小狗的行为。const关键字表示该函数不会修改对象的状态。