Skip to content

NJUDeepEngine/advanced-programming-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C++ 面向对象编程教学示例

C++17 License Build Status

这是一个用于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. 类与对象基础

  • 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指针

  • 02_this_implicit.cpp: this指针的隐式使用
  • 03_this_pass_to_func.cpp: this指针的显式传递
  • 04_method_chaining.cpp: 方法链式调用的实现

03. 构造函数与析构函数

  • 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. 综合示例

  • 00_demo.cpp: 一站式演示,串联多个核心概念

🎓 学习建议

  1. 循序渐进: 按照目录顺序学习,从基础概念开始
  2. 动手实践: 每个示例都要编译运行,观察输出结果
  3. 修改实验: 尝试修改代码,观察不同行为
  4. 理解原理: 不仅要知道怎么做,更要理解为什么这样做

🤝 贡献指南

欢迎提交Issue和Pull Request来改进这个项目!

贡献方式

  1. Fork本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启Pull Request

📄 许可证

本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

感谢GPT和Cursor的Agent


⭐ 如果这个项目对你有帮助,请给它一个星标!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published