课程说明
以「奠定扎实基础」为目的,探讨面向对象 C++ 语言之种种语法+语意,以及面向对象编程 (Object-Oriented Programming) 应培养、应注意的思维。
课程特色
深入浅出, 实例经典
课程对象
C++初中阶学员
课程大纲
1. C++版本演进
2. 数据和函数,从 C 到 C++
3. C++程序的基本型式
4. 关于输出
5. Header(头文件)中的防卫式声明
6. Header(头文件)中的布局
7. Object Based (基于对象)
8. 第一个 C++程序, class without pointer member
Class 的声明
Class template (类模板) 简介
this pointer 深究
Inline(内联)函数
Access Level (访问级别)
Constructor (ctor, 构造函数)
Const member functions (常量成员函数)
参数传递:pass by value vs. pass by reference (to const)
返回值传递:return by value vs. return by reference (to const)
Friend (友元)
Class 所创建的各个 objects 互为 friends (友元)
Class body 外的各种定义 (definitions)
Operator Overloading (操作符重载-1, 成员函数)
Return by reference 语法再分析
Operator Overloading (操作符重载-2, 非成员函数)
Temp. Object (临时对象)
专家经验
编程示例
9. 第二个 C++程序, class with pointer member
三个特殊函数 (Big Three):Copy Constructor (拷贝构造),Copy Assignment Operator (拷贝赋值),Destructor (析构函数)
String的ctor和dtor (构造函数和析构函数)
String必须有copy ctor (拷贝构造函数) 和copy assignment operator(拷贝赋值函数)
一定要检查 self assignment (自我赋值)
自我赋值的另一个处理办法:Copy and Swap
Output 函数 (operator<< 的重载)
专家经验
编程示例
10. 所谓 stack (栈),所谓 heap (堆)
Objects 的生命期 (寿命)
new:先分配 memory 再调用 ctor
delete:先调用 dtor 再释放 memory
动态分配内存块 (dynamically allocated memory block) 彻底认识
动态分配所得的 array
new[] 一定要搭配 delete[]
进一步补充:static, private ctors, cout, Class template, Function template, namespace, std::, boost::, tr1::
标准库概述
更多细节
11. Object Oriented (面向对象)
Composition (复合)表示 has-a
Composition (复合)关系之下,构造由内而外,析构由外而内。
Delegation (委托)就是 Composition by reference.
Inheritance (继承)表示 is-a
Inheritance (继承)关系之下,构造由内而外,析构由外而内
Inheritance+Composition 关系下的构造和析构
Inheritance (继承)并带有 virtual functions (虚函数)
虚函数的经典用法1 : Template Method (模板方法)
虚函数的经典用法2 : Polymorphism (多态)
虚函数的奥秘:vptr(虚指针), vtbl(虚表), dynamic binding(动态绑定)
Delegation (委托) + Inheritance (继承) : Observer
Delegation (委托) + Inheritance (继承) : Composite
Delegation (委托) + Inheritance (继承) : Prototype