关于C/C++的一些知识点整理 (11)

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读写都可以),参数个数,参数类型。

猜你喜欢

转载自blog.csdn.net/mmmmmmyy/article/details/81704411