C++——类

53 阅读2分钟

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 关键字表示该函数不会修改对象的状态。