1.内联函数是使用inline关键字声明的函数,也成内嵌函数,它主要的作用是解决程序的运行效率。
使用内联函数的时候要注意:
①递归函数不能定义为内联函数。
②内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。
③内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。
④对内联函数不能进行异常的接口声明。
2.容器的分类
序列式容器(Sequence containers)
每个元素都有固定位置--取决于插入时机和地点,和元素值无关。
vector、deque、list
关联式容器(Associated containers)
元素位置取决于特定的排序准则,和插入顺序无关 。
set、multiset、map、multimap
STL中一级容器(容器元素本身是基本类型,非组合类型)有:vector, deque, list。
3.有一种语言称为lua,里面的数字只有一种类型(number),实际上是双精度浮点数。没有各种位数的整数,如32位、64位整数等。该语言可以用number类型的变量作为数组下标,该语言无法实现32位数字整数的按位与、或、异或运算,该语言可以正常进行双精度浮点数运算。
4. ①#include包括""和<>这两种情况,""实在用户工作目录下寻找(用户的工作目录是通过编译器指定的),<>是找系统标准库函数,通过系统环境变量指定系统库目录;
②多个源文件同时用到的全局整数变量,头文件中只能存放全局变量的声明,定义要放在.cpp文件中,如果把定义放在.h文件中会出现 error LNK2005: already defined in xxx.obj
fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.这样的链接错误;
③在大型项目开发中,把所有自定义的数据类型、全局变量、函数声明都放在一个头文件中,各个源文件都只需要包含这个头文件即可,省去了要写很多#include语句的麻烦,是好的编程习惯。
5.使用 char* p = new char[100]申请一段内存,然后使用delete p释放,有什么问题?
答:不会有内存泄露,但不建议用。
当用delete来释放用new int[]申请的内存空间时,由于其为基本数据类型没有析构函数,所以使用delete与delete []相同,两者都会释放申请的内存空间,若是自定义的数据类型,有析构函数时,用new []申请的空间,必须要用delete []来释放,因为要delete []时会逐一调用对象数组的析构函数,然后释放空间。
6.C++中,能作为函数重载判断依据的是 const(有没有const区别是:有const只读。没有const读写都可以),参数个数,参数类型。