这是一个用于C++面向对象编程教学的代码示例集合,涵盖了从基础概念到高级特性的完整学习路径。每个示例都是独立的、可编译运行的代码,适合课堂演示和学生自学。
注:所有内容都是AIGC的(手动狗头)
- 类与对象:封装、访问控制、成员函数
- this指针:隐式使用、显式传递、方法链式调用
- 构造函数与析构函数:资源管理、初始化列表、拷贝控制
- 高级特性:静态成员、友元函数、组合关系
- C++初学者
- 计算机科学专业学生
- 需要复习OOP概念的开发者
- 编程课程教师
cpp-oop/
├── src/ # 源代码目录
│ ├── 01_classes_and_objects/ # 类与对象基础
│ │ ├── 01_class_basics.cpp # 类的基本概念
│ │ ├── 05_static_members.cpp # 静态成员
│ │ ├── 12_composition.cpp # 组合关系
│ │ ├── 13_friend_stream.cpp # 友元函数与流操作
│ │ └── 14_array_vector_objects.cpp # 对象数组与vector
│ ├── 02_this_pointer/ # this指针
│ │ ├── 02_this_implicit.cpp # this指针隐式使用
│ │ ├── 03_this_pass_to_func.cpp # this指针显式传递
│ │ └── 04_method_chaining.cpp # 方法链式调用
│ └── 03_constructors_destructors/ # 构造函数与析构函数
│ ├── 06_ctor_overload.cpp # 构造函数重载
│ ├── 07_init_list_const_ref.cpp # 初始化列表与const引用
│ ├── 08_default_member_init_order.cpp # 默认成员初始化顺序
│ ├── 09_destructor_resource.cpp # 析构函数与资源管理
│ ├── 10_copy_vs_assignment.cpp # 拷贝构造与赋值
│ └── 11_member_object_order.cpp # 成员对象构造顺序
├── examples/ # 综合示例
│ └── 00_demo.cpp # 一站式演示
├── docs/ # 文档目录
├── bin/ # 编译输出目录
├── Makefile # 构建脚本
└── README.md # 项目说明
- C++17兼容的编译器(推荐GCC 7+、Clang 5+、MSVC 2017+)
- Make工具(Windows用户可使用MinGW或WSL)
# 克隆仓库
git clone <repository-url>
cd cpp-oop
# 编译所有示例
make
# 运行特定示例
./bin/examples/00_demo
./bin/src/01_classes_and_objects/01_class_basics
./bin/src/02_this_pointer/02_this_implicit# 编译类与对象相关示例
make classes
# 编译this指针相关示例
make this-pointer
# 编译构造函数相关示例
make constructors
# 编译综合示例
make examples- 01_class_basics.cpp: 类的封装、访问控制、getter/setter方法
- 05_static_members.cpp: 静态数据成员和静态成员函数
- 12_composition.cpp: 组合关系(has-a)的实现
- 13_friend_stream.cpp: 友元函数和流操作符重载
- 14_array_vector_objects.cpp: 对象数组和std::vector的使用
- 02_this_implicit.cpp: this指针的隐式使用
- 03_this_pass_to_func.cpp: this指针的显式传递
- 04_method_chaining.cpp: 方法链式调用的实现
- 06_ctor_overload.cpp: 构造函数重载
- 07_init_list_const_ref.cpp: 成员初始化列表和const引用
- 08_default_member_init_order.cpp: 默认成员初始化和初始化顺序
- 09_destructor_resource.cpp: 析构函数和资源管理
- 10_copy_vs_assignment.cpp: 拷贝构造函数和赋值操作符
- 11_member_object_order.cpp: 成员对象的构造和析构顺序
- 00_demo.cpp: 一站式演示,串联多个核心概念
- 循序渐进: 按照目录顺序学习,从基础概念开始
- 动手实践: 每个示例都要编译运行,观察输出结果
- 修改实验: 尝试修改代码,观察不同行为
- 理解原理: 不仅要知道怎么做,更要理解为什么这样做
欢迎提交Issue和Pull Request来改进这个项目!
- Fork本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启Pull Request
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。
感谢GPT和Cursor的Agent
⭐ 如果这个项目对你有帮助,请给它一个星标!