一、头文件用于声明而不是用于定义
一般包括类的定义,extern变量的声明和函数的声明。头文件中唯一可以定义类,值在编译时就已知的const对象和inline函数。
二、避免多重包含的预编译
#ifndef SALESITEM_H
#define SALESITEM_H
#endif
为了保证头文件在给定的源文件中只处理一次,就如此去定义预处理器变量即可。
三、标准库类型
C++提供了内容丰富的抽象数据类型标准库,最重要的标准库类型就是string和vector,分别定义了大小可变的字符串和集合。以及bitset类型,处理操作位的集合。
1.string类型
cin和getline两种方式读入string的区别
getline:这个函数接受两个参数,一个输入流对象和一个string对象。从输入流的下一行读取,并保存读取的内容到string中,但不包括换行符。和cin不同的地方在于getline遇换行符就结束,哪怕是第一个符号就是换行符,getline也将停止读入并返回。
string::size_type类型:string类类型和许多其他的库类型都定义了一些配套类型,通过这些配套类型,库类型的使用就能与机器无关。size_type就是其中一种对应unsigned类型的配套类型,而且可以保证足够大能够存储任意对象的长度。
和字符串字面值的连接:只有在“+”两边至少有一个是string类型才能进行字符串的连接。
string对象中字符处理,它包含在cctype头文件中
2.vector类型
vector是一个类模板,使用类模板可以编写一个类定义或函数定义,而用于多个不同数据类型。我们可以保存string类型的vector或者保存int类型的vector,或保存自定义的类类型对象的vector。是个C++中十分重要的类型。注意:vector不是一个数据类型,而是一个类模板,可以用来定义任意多种数据类型。因此vector<int>和vector<string>都是数据类型。
vector对象可以动态的增长,不、像c和java中的内置类型,vector是连续存储的,动态的增加元素。
3.迭代器
迭代器是一种检查容器内元素并遍历元素的数据类型。现代C++程序员更倾向于使用迭代器而不是下标操作访问容器元素。