C/C++知识点总结(四)

时间:2022-09-05 10:07:10
31.如果文件名包含在尖括号中,则C++编译器将在存储标准头文件的主机系统的文件系统中查找;如果文件名包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录,如果没有在那里找到头文件,则将在标准位置查找。
32.作用域描述了名称在文件的多大范围内可见;链接性描述了名称如何在不同的单元间共享。链接性为外部的名称可在文件间共享,链接性为内部的名称只能由一个文件中的函数共享。自动变量的名称没有链接性,因为它们不能共享。
33.寄存器变量是另一种形式的自动变量。如果变量被存储在寄存器中,则没有内存地址,因此不能将地址操作符用于寄存器变量。
34.要想创建链接性为外部的静态持续变量,必须在代码块的外面声明它;要创建链接性为内部静态持续变量,必须在代码块的外面声明它,并使用static限定符;要创建没有链接性的静态持续变量,必须在代码块内声明它,并使用static限定符,作用域为代码块。
35.对于外部链接性变量,有且只有一个文件中包含了该变量的外部定义。其他文件要使用该变量,必须在引用声明中使用关键字extern。如果文件没有提供变量的extern声明,则不能使用在其他文件中定义的外部变量。
36.mutable用来指出,即使结构(或类)变量为const,其某个成员也可以被修改。volatile关键字表明,即使程序代码没有对内存单元进行修改,其值也可能发生变化。
37.C++不允许在一个函数中定义另外一个函数,因此所有函数的存储持续性都自动为静态的。
38.对于链接性为外部的函数来说,这意味着在多文件程序中,只能有一个文件包含该函数的定义,但使用该函数的每个文件都应该包含其函数原型。
39.当基类和派生类都采用动态内存分配时,派生类的析构函数、复制构造函数以及赋值操作符都必须使用相应的基类方法处理基类元素。
  。对于析构函数这是自动完成的。
  。对于构造函数这是通过在初始化成员列表中调用基类的复制构造函数来完成的,如果不这样做将自动调用基类的默认构造函数。
  。对于赋值操作符,这是通过使用作用域解析操作符显示的调用基类的复制操作符来完成的。
40.abort()是否刷新文件缓冲区取决与实现;exit()刷新文件缓冲区,但不显示消息。