文章目录
- C++程序设计(I)- 面向对象程序设计
- C++程序设计(II)- 对象模型
- 1. 导读
- 2. conversion function
- 3. non-explicit one argument constructor
- 4. pointer-like classes
- 5. function-like classes
- 6. namespace经验谈
- 7. class template
- 8. Funtion Template
- 9. Member Template
- 10. specialization
- 11. 模板偏特化
- 12. 模板模板参数
- 13. 关于C++标准库
- 14. 三个主题
- 15. Reference
- 16. 复合&继承关系下的构造和析构
- 17. 关于vptr和vtbl
- 18. 关于this
- 19. 关于Dynamic Binding 19(1)
- 19. 关于Dynamic Binding 19(2)
- 20. 关于New,Delete
- 21. Operator new,operator delete
- 22. 示例
- 23. 重载new(),delete()$示例
- 24. Basic_String使用new(extra)扩充申请量
**程序设计语言,通常简称为编程语言,是一组用来定义计算机程序的语法规则,是一套包含语法、词汇和含义的正式规范。这些规范通常分成4个部分。
- 数据成分:用以描述程序中所涉及的数据。
- 运算成分:用以描述程序中所包含的运算。
- 控制成分:用以表达程序中对运算流程的控制。
- 传输成分:用以表达程序中数据的传输。**
C++程序设计(I)- 面向对象程序设计
1. C++编程简介
1.1 基础
- 变量(variable)
- 类型(types):char,short,int,long,float,double,struct
- 作用于(scope)
- 循环(loops):while,for
- 流程控制:if-else,switch-case
- 编译
- 连接
- 可执行程序
1.2 目标
- 培养正规、大气的编程习惯
- 以良好的方式编写C++ class,基于对象(Object Based)
- class without pointer members
- class with pointer members
- 学习Classes直接的关系,面向对象(Object Oriented)
- 继承(inheritance)
- 复合(composition):聚合
- 委托(delegation,composition by reference):组合
1.3 C++历史
- B语言(1969)
- C语言(1972)
- C++语言(1983)
new C --> C with Class --> C++
1.4 C++演化
- C++ 98(1.0)
- C++ 03(TR1,Technical Report 1)
- C++ 11(2.0)
- C++ 14
- C++语言和C++标准库
1.5 参考书
- C++ Primer
- The C++ Programming Language
- Effective C++
- The C++ Standard Library
- STL源码剖析
1.6 C&C++关于数据和函数
- C(Data + Functions),variables
- C++(Data Members + Member Functions),objects
2.头文件与类的声明
2.1 C++代码基本形式
- .h
头文件(header files):自定义头文件,标准库头文件
#ifndef __XXX_H__
#define __XXX_H__ // 防卫式声明(guard)
// 前置声明(forward declarations)
...
// 类声明(class declarations)
// 模板(template)
template<typename T...>
// class head
class XXX
// class body
{
...
}
// 类定义(class definition)
...
#endif
- .cpp
- 内联函数(inline)
只是建议编译器内联,但是否能够内联取决于编译器实现。 - 访问级别
private,public,protected
- 内联函数(inline)
3. 构造函数
- 带默认参数的构造函数
- 构造函数初始化列表,用 “:”
- 构造函数可以重载(overloading),编译器会给重载函数重新命名,保证函数名不重复。注意空参数构造函数和带所有默认值构造函数的冲突。
- 私有构造函数
4. 参数传递与返回值
- 常量成员函数(const member functions)
- 参数传递:
- 传值(pass by value)
- 传引用(pass by reference)(to const)
- 友元(friend)
相同class的各个objects互为友元(friends) - 返回值
- 返回值
- 返回引用
5. 操作符重载与临时对象
- 操作符重载
operator xxx,是写成成员函数,还是非成员函数 - 临时对象
typename()
6. 复习Complex类的实现过程
7. 三大函数:拷贝构造,拷贝赋值,析构
- 深拷贝与浅拷贝
- 拷贝构造
1)分配新空间,2)拷贝 - 拷贝赋值
1)检测自我赋值(保证效率和正确性),2)释放自己,3)分配新空间,4)拷贝
8. 堆,栈与内存管理
- 变量范围(scope)
auto(stack中分配),static,global - stack对象生命周期
- heap对象生命周期
delete - new
1)分配内存,2)类型转换(void–>class),3)调用构造函数
- delete
1)调用析构函数,2)释放内存
9. 复习String类的实现过程
10. 扩展补充:static,类模板,函数模板,及其他
- static
1)静态数据成员,类中只是声明,需要在函数外定义;2)静态函数成员(操作静态数据成员),可以通过对象调用,也可以通过函数名调用 - 类模板
template
11. 组合与继承
12. 虚函数与多态
函数
- 非虚函数(non-virtual):不能覆写(overwrite)
- 非纯虚函数(impure virtual):提供了默认实现,可以赋写,也可以不赋写
- 纯虚函数(pure virtual):未提供默认实现,必须赋写
13. 委托相关设计
- Composite
- Prototype
C++程序设计(II)- 对象模型
1. 导读
- 面向对象编程(Object-Oriented Programming)
- 泛型编程(Generic Programming)
- 对象模型(Object Model)
- 虚指针(vptr)
- 虚表(vtbl)
- 虚机制(virtual mechanism)
2. conversion function
3. non-explicit one argument constructor
- explicit:用于构造函数,明确只能显示的调用构造函数
4. pointer-like classes
5. function-like classes
6. namespace经验谈
7. class template
8. Funtion Template
9. Member Template
10. specialization
11. 模板偏特化
12. 模板模板参数
这不是模板模板参数
13. 关于C++标准库
- 确认C++支持版本
cout << __cplusplus << endl ;
14. 三个主题
15. Reference