1、C++使用字符串有3种风格:
• C风格,将字符串表示成字符数组
• 把字符串包装在一种更易于使用的串类型中,如string类
• 一些非标准的方法
2、在编写程序之前,先不要具体编写任何代码,而应当首先设计程序,避免陷入到应用程序中;
编写程序如果没有设计,就像你建造一座楼房,但是却没有设计图纸。
3、C++两个基本原则:抽象和重用
4、面向对象程序设计只是一种编程思想,是用另一种思路来考虑程序中发生了什么。
过程性方法的基础是问这样一个问题:“这个程序要做什么?”;与此不同,面向对象方法则问了另一个问题:
“我要为那些实际对象建模?”。
OOP所基于的思想是:不应该将程序划分为任务,而应当划分为物理对象模型。
5、库(library):是用于完成一个特定任务(如解析XML)或者处理一个特定领域(如加密)的代码集。
框架(framework):是我们设计程序时所基于的一个代码集。如MFC为创建windows窗口应用程序提供了一个框架。
框架通常决定程序的结构。
6、C++STL是同构的:每个容器中只允许有相同类型的元素。
vector、list、deque称为顺序容器,因为他们存储了一个元素序列。
7、制表符和空格是不同的,制表符可以是任意长度,空格只是空格。
建议使用制表符代表4个空格的编辑器。
8、如果声明了一个默认构造函数或者其他任何构造函数,编译器就不会再生成默认的构造函数。(要注意最好自己声明一个默认构造函数)
9、初始化列表可以在构造数据成员的同时进行初始化。
另外,初始化列表的顺序要按照类中数据成员定义的顺序进行,否则编译器会提示出错。
10、为什么模板优于其他通用编程技术?
• C/C++可以使用void*来存储任意类型的一个指针。但是在存储和使用的时候都要进行数据类型转换,是类型不安全的;
• 通过多态,该类的子类都可以以基类指针的方式存储,但并不是类型安全的。从容器中删除一个对象时必须要知道它的实际类型,并且还要转换到对应的子类;
模板的缺点:
• 语法复杂;
• 解析很困难;
• 模板要求同构的数据结构;
• 存储不同类型的对象是时会代码膨胀code bloat,编译器会为每一种类型都生成一种实现代码;
11、模板和集成可同时使用
12、类的赋值操作符
ClassName& operator=(const ClassName& other);
注意返回值。
另外,赋值操作符还要允许自赋值,在方法的开始要进行检查:
if(this==&other)
return *this;
13、定义一个指向指针的指针
14、inline
C++允许程序员建议编译器将一个函数调用实际上不当成是函数调用,而是直接把这段代码嵌入到特定位置。