答案:0. 编译C++程序时,编译器自动定义了一个预处理名字__cplusplus,而编译标准C时,自动定义名字__STDC__。另外几个比较有用的预定义名 字是__LINE__(文件的当前编译行数),__FILE__(当前被编译的文件名字),__DATE__(编译日期)和__TIME__(编译时 间)。
1. C库头文件的C++名字总是以字母C开头,后面去掉后缀.h的C名字,如<assert.h>在C++库中的名字是<cassert>。两种使用方法:
#include <assert.h>或者
#include <cassert>
using namespace std;
2. 静态与动态内存分配的两个主要区别:(1)静态对象是有名字的变量,可以直接进行操作,动态对象是没有名字的变量,可以通过指针间接进行操作;(2)静态 对象的分配和释放由编译器自动处理,而动态对象必须由程序员显式的管理,通过new和delete两个表达式来完成。
3. 类的缺省构造函数是不需要用户提供任何参数的构造函数。
4. STL中标准数组-vector(文件<vector>),两种遍历方式:(1)通过下标操作符;(2)使用迭代器,如 vector<int>::iterator iter;可以通过对iterator解引用来直接访问实际的元素*iter;STL提供了作用于容器类型的泛型算法,头文 件<algorithm>。
5. 文字常量是不可寻址的。
6. 常用的几个转义序列:
newline(换行符) \n \14
horizontal tab(水平制表符) \t
vertical tab(垂直制表符) \v
backspace(退格符) \b
carriage return(回车键) \r
formfeed(进纸键) \f
alert (bell)(响铃符) \a \7
55. auto_ptr是STL提供的类模板,可以帮助程序员自动管理用new表达式动态分配的单个对象。头文件为<memory>,只有拥有底层 对象所有权的对象负责释放内存,但使用Copy constructor和Assignment进行操作时,左边的对象得到所有权,而右边的则被撤销所有权。使用get来测试是否指向一个底层对象,使用 reset来重新设置一个底层对象,assignment操作符不支持内存指针。
56. 可以创建动态的const对象,如const int *pci = new const int(1024);不能创建const对象数组,创建的const对象必须初始化。
57. 定位new表达式容许程序员要求将对象创建在已经被分配好的内存中。如:char *buf=new char [1024];Foo *pb = new (buf) Foo;
58. 可以使用未命名的namespace来声明一个局部于某一文件的实体,即该函数只在当前文件中可见。通常在实现文件中使用,这种方法是用来替换C语言中的static函数声明。
上一个:学C好还是C++好?
下一个:这个C++程序哪错了