一、上期回顾C 面向过程、C 面向对象C 新增命名空间、cin/cout、new/delete、权限控制。今天正式进入C 面向对象核心类与对象。二、类与对象核心概念类class抽象模板描述事物属性与行为对象类的实例实实在在开辟内存访问权限private私有仅类内访问默认public公有外部可直接访问protected保护继承场景使用核心思想数据封装成员变量私有对外只提供公开接口保证数据安全。三、最简类定义示范#include iostream using namespace std; class Person { // 私有成员 private: int age; // 公开接口 public: // 成员函数 void setAge(int a) { age a; } void show() { cout age age endl; } }; int main() { // 实例化对象 Person p; p.setAge(20); p.show(); // 错误age 是 private 无法直接访问 // p.age 18; return 0; }四、构造函数作用对象创建时自动调用负责初始化成员。特点函数名与类名完全相同无返回值可重载不写则编译器提供默认无参构造1. 无参构造class Person { private: int age; public: // 无参构造 Person() { age 0; cout 无参构造执行 endl; } };2. 有参构造Person(int a) { age a; cout 有参构造执行 endl; }3. 初始化列表推荐写法效率更高直接初始化不先创建再赋值Person(int a) : age(a) { }五、析构函数作用对象销毁时自动调用释放堆内存、关闭资源。特点名前加~无参、无返回、不能重载编译器会提供默认析构class Person { public: // 析构函数 ~Person() { cout 析构函数执行 endl; } };栈对象出作用域自动析构堆对象delete时触发析构六、拷贝构造函数触发场景用已有对象初始化新对象时自动调用。格式类名(const 类名 旧对象)class Person { private: int age; public: Person(int a) : age(a) {} // 拷贝构造 Person(const Person other) { age other.age; cout 拷贝构造执行 endl; } void show() { cout age endl; } }; int main() { Person p1(18); Person p2 p1; // 触发拷贝构造 p2.show(); return 0; }默认拷贝构造编译器默认提供浅拷贝逐字节赋值。后续深度讲解浅拷贝 与 深拷贝 内存坑。七、this 指针每一个成员函数隐含this指针指向当前调用的对象解决成员变量与局部变量重名void setAge(int age) { this-age age; }八、完整整合代码#include iostream using namespace std; class Person { private: int age; public: // 无参构造 Person() : age(0) { cout 无参构造 endl; } // 有参构造 Person(int a) : age(a) { cout 有参构造 endl; } // 拷贝构造 Person(const Person p) { this-age p.age; cout 拷贝构造 endl; } // 析构 ~Person() { cout 析构函数 endl; } void show() { cout age age endl; } }; int main() { Person p1; Person p2(22); Person p3 p2; p1.show(); p2.show(); p3.show(); return 0; }九、今日核心总结类是模板对象是实例private 保护数据构造创建对象初始化析构销毁对象释放资源拷贝构造对象赋值初始化触发this指针代表当前对象十、课后练习自定义 Student 类包含姓名、学号手写无参构造、有参构造、拷贝构造、析构利用this指针解决变量名冲突