C++面向对象编程高级培训

一、课程目标

本次课程围绕C++面向对象编程这一课题,深入的讲解C++ OOP语言机制,以及运用面向对象技术有效架构C++应用。通过本次课程的学习,学员将具备以下能力:

  • 深刻理解C++面向对象语言机制;
  • 面向对象编程的若干法则。

二、参训要求

参加本次课程的学员须具备以下能力:

  • 本次课程假定学员有编程经历,使用C/C++、Java或其它语言实际编写过代码;
  • 能熟练使用Windows或Linux下的C++编译器(如g++)、调试器(如gdb)。

三、课程实践环境

  • 学员自备电脑
  • 实践平台 (以下二者之一):
    • Win32 / Visual Studio 2008 (或更新)
    • Linux 2.6.18+ x86-32 / GCC 4.1.2+ / Eclipse CDT 、vi

四、课程大纲

本次课程由以下几个部分构成:

1、从C到C++

  • 引用和指针:为什么引用很重要
  • const关键字:为什么const很重要
  • 名字空间 (namespace)

2、深入C++对象

  • 关于C++对象
    • 内置类型的对象,如int、double对象
    • 自定义类型的对象
  • 对象类型的定义
    • 关键字class和struct
    • 类成员:成员函数和数据成员
    • 静态数据成员
    • 成员的访问控制
    • 对象的size
    • 关于this指针
    • const成员函数、const究竟修饰什么
    • mutable数据成员
    • 4种特殊成员函数:constructor、destructor、copy constructor、operator=
    • 对象的构造、初始化列表
    • 对象的析构
    • 对象的复制
    • 什么情况下有必要显式定义4种特殊函数
  • C++对象生命周期

3、操作符重载

  • 关于C++中操作符重载机制
  • 重要操作符重载
    • 算术运算:+, -, *, /, %, ++, --, ...
    • 关系运算:>, <, ==, !=
    • 下标存取:[ ]
    • 函数调用:(),函数对象
    • 类型转换、单参数构造函数与隐式转换、阻止隐式转换 -- explicit关键字
  • 友元与成员


4、面向对象基础
-- 继承

  • 基类与派生类
  • 再谈对象的构造与析构
  • 虚函数、纯虚函数
  • 派生类的内存布局、虚函数表
  • 多态、多态类型、如何体现多态
  • 虚析构、为什么虚析构很重要

5、关于继承更多的话题

  • 多继承
  • 虚继承与虚基类
  • 对基类的访问、public / protected / private继承
  • Down cast:static_cast<>和dynamic_cast<>
  • 运行期类型识别 (RTTI)

6、C++与面向对象设计

  • C++语言机制提供了完整的OOP支持
  • 超越继承
  • OOP若干法则和设计模式
    • 封装变化,分离不变与变化
    • 面向接口编程,而不是针对实现编程
    • 多用组合、少用继承
    • 努力保持交互对象间的松耦合
    • 类设计的开闭原则:类应该对扩展开放、对修改关闭
    • 依赖抽象,而不是依赖具体类
    • 最少知识原则
    • 好莱坞法则 (控制反转):不要打电话给我,我会找你的
    • 单一责任原则:一个类应该只有一个引起变化的原因

五、时间安排

课程时间:3天,以每天6小时计,具体安排如下:

  • Day1
    • 1 - 从C到C++
    • 2 - 深入C++对象
    • 3 - 操作符重载
  • Day2
    • 4 - 面向对象基础 -- 继承
    • 5 - 关于继承更多的话题
  • Day3
    • 6 - C++与面向对象设计
    • 课程回顾与总结

六、课程资源

可获取的课程资源见:教学资源。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。