C++语言基础3:用户自定义类型“class”详细讲解 在 C 中class是定义用户自定义类型user-defined type的核心关键字。它用于将数据成员变量和操作这些数据的函数成员函数封装在一起形成一个逻辑单元是 C面向对象编程OOP的基石。一、基本语法例class ClassName { // 访问控制区public / private / protected public: // 公有成员对外接口 void publicFunction(); int publicVar; private: // 私有成员内部实现细节 void privateFunction(); double privateData; };✅ 类定义以class开头后跟类名大括号{}包裹成员并以分号;结尾。二、核心特性详解1.封装Encapsulation将数据和操作数据的方法绑定在一起。通过public/private控制访问权限隐藏实现细节。例class Circle { private: double radius; // 外部不能直接修改 public: void setRadius(double r) { if (r 0) radius r; // 可加入合法性检查 } double getArea() const { return 3.14159 * radius * radius; } };优势防止非法操作如负半径保证对象状态一致性。2.访问控制Access Controlclass默认成员为private与struct不同。必须显式使用public:才能暴露接口。例class MyClass { int a; // 默认 private public: int b; // 显式 public }; MyClass obj; // obj.a 10; // ❌ 错误a 是 private obj.b 20; // ✅ 正确3.构造函数与析构函数构造函数Constructor初始化对象。析构函数Destructor清理资源如释放内存。例class FileHandler { private: FILE* file; public: // 构造函数 FileHandler(const char* filename) { file fopen(filename, r); } // 析构函数自动调用 ~FileHandler() { if (file) fclose(file); } };⚠️ 若未定义编译器会生成默认版本但可能不满足需求。4.继承Inheritance使用:实现继承支持代码复用。默认继承方式为private需显式写public表示公有继承。例class Animal { public: void eat() { cout Eating...\n; } }; class Dog : public Animal { // 公有继承 public: void bark() { cout Barking!\n; } }; Dog d; d.eat(); // ✅ 继承自 Animal d.bark();公有继承表达 “is-a” 关系狗是一种动物。5.多态Polymorphism通过虚函数virtual function实现运行时多态。例class Shape { public: virtual double area() const 0; // 纯虚函数 → 抽象类 }; class Rectangle : public Shape { double width, height; public: double area() const override { return width * height; } }; Shape* s new Rectangle(); cout s-area(); // 调用 Rectangle::area() 多态允许统一接口操作不同子类对象。三、classvsstruct关键区别特性classstruct默认访问权限privatepublic默认继承方式privatepublic语义侧重行为封装OOP数据聚合POD 技术上二者功能完全等价选择取决于设计意图用class表示“有行为的对象”如BankAccount用struct表示“纯数据容器”如Point { int x, y; }四、高级特性简要提及特性说明友元friend允许非成员函数/类访问私有成员静态成员static属于类而非对象共享于所有实例运算符重载自定义,等操作符行为模板类template class支持泛型编程如std::vectorT五、为什么需要class模块化将相关数据和逻辑组织在一起。抽象隐藏复杂实现提供简洁接口。复用通过继承和组合减少重复代码。维护性修改内部实现不影响外部调用者。总结关键点说明本质用户自定义类型包含数据 方法默认权限成员和继承均为privateOOP 支撑封装、继承、多态的实现基础与 struct功能相同语义和默认权限不同一句话理解class是 C 中构建复杂系统的“积木”它让代码更安全、可读、可维护。