|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 嵌入式C/C++程序设计要求 > C++程序设计基础 >
|
被考次数:2次
被考频率:低频率
总体答错率:46%  
知识难度系数:
|
由 软考在线 用户真实做题大数据统计生成
|
相关知识点:24个
|
|
|
|
C++程序基础包括数据类型、输入/输出处理、语句、函数以及类等。
|
|
|
|
C++是强类型编程语言,在继承C语言基本数据类型(char、int、float、double、void)的基础上,C++扩展了布尔类型(bool)和宽字符类型(wchar_t)、Unicode字符类型char16_t和char32_t(使用char16_t和char32_t需要包含头文件uchar.h)。
|
|
|
bool类型数据的取值为真(true)或假(false),wchar_t类型数据占用2个字节,char16_t和char32_t分别用2个字节和4个字节表示。
|
|
|
C++的枚举、结构体、共用体和数组都是复合数据类型,其定义与使用要求与C语言完全兼容,同时进行了扩展,其中,结构体、共用体类型可作为类类型来定义,通过标准库类型vector为用户提供更灵活的数组。
|
|
|
|
大多数C程序使用称为stdio的标准I/O库进行输入/输出处理,该库也能够在C++中使用。但是,C++程序主要使用称为iostream的I/O流库。
|
|
|
在C++中,流是输入/输出设备的另一个名字,如一个文件、屏幕和键盘等。每个I/O设备传送和接收一系列的字节,称之为流。输入操作可以看成是字节从一个设备流入内存,而输出操作可以看成是字节从内存流出到一个设备。使用C++的标准I/O流库时,必须包括以下两个头文件:
|
|
|
|
iostream文件提供基本的输入/输出功能,iomanip文件提供格式化的功能。通过包含iostream流库,内存中就创建了一些用于处理输入和输出操作的对象。标准的输出流(通常是屏幕)称为cout,标准的输入流(通常是键盘)称为cin。
|
|
|
|
引用(reference)为对象提供了另一个名字(别名),通过将声明符写成“&d”的形式来定义引用类型,其中“d”是声明的变量名。例如:
|
|
|
|
在上面的定义中,num2为num1的引用,它并没有复制num1,而只是num1的别名,即num2与num1绑定(bind)在一起,它们表示相同的对象。例如,如果执行运算“num1=0.16”,则num1和num2的值均为0.16。不同于变量的定义,引用必须在定义时初始化。
|
|
|
引用必须用对象进行初始化,用字面值或表达式初始化引用编译时会报错。
|
|
|
|
引用提供了与指针相同的能力,但比指针更为直观,更易于理解。
|
|
|
|
|
|
(1)不存在空引用。引用必须连接到一个合法的对象。
|
|
|
(2)一旦引用被初始化为一个对象,就不能再引用另一个对象。指针可以指向另一个对象。
|
|
|
(3)引用必须在创建时被初始化。指针可以不进行初始化。
|
|
|
|
在C++程序中可以使用C的库函数。例如,C++继承了C语言用于日期和时间操作的结构和函数。在程序中使用日期和时间相关的函数和结构,需要引用头文件。
|
|
|
有四个与时间相关的类型:clock_t、time_t、size_t和tm。类型clock_t、size_t和time_t能够把系统时间和日期表示为某种整数。
|
|
|
结构类型tm把日期和时间以C结构的形式保存,tm结构的定义如下:
|
|
|
|
下面是几个与系统时间有关的函数声明(time.h)。
|
|
|
|
|
定义函数时,在“返回类型函数名(参数表列)”之前加上inline使之成为内联函数,即“inline返回类型函数名(参数表列)”。
|
|
|
对于内联函数,编译器是将其函数体放在调用该内联函数的地方,不存在普通函数调用时栈记录的创建和释放开销。
|
|
|
|
(1)在一个文件中定义的内联函数不能在另一个文件中使用。它们通常放在头文件中共享。
|
|
|
(2)内联函数应该简洁,只有几个语句,如果语句较多,不适合定义为内联函数。
|
|
|
(3)内联函数体中不能有循环语句、if语句或switch语句,否则函数定义时即使有inline关键字,编译器也会把该函数作为非内联函数处理。
|
|
|
|
|
C++中,当有一组函数完成相似功能时,函数名允许重复使用,编译器根据参数表中参数的个数或类型来判断调用哪一个函数,这就是函数的重载。对于重载函数,只要其参数表中参数个数或类型不同,就视为不同的函数。例如,下面的max为重载函数。
|
|
|
|
上面定义了三个名称为max的函数,它们的参数和返回值类型都不同。在程序中若有对max函数的调用,编译器将根据参数形式进行匹配,如果找不到对应参数形式的函数定义,编译器给出错误信息。
|
|
|
|
|
(2)函数的形参变量名不同不能作为函数重载的依据。
|
|
|
(3)C++中不允许函数名相同、形参个数和类型也相同而返回值不同的情形,否则编译时会出现函数重复定义的错误。
|
|
|
(4)调用重载的函数时,如果实参类型与形参类型不匹配,编译器会自动进行类型转换。如果转换后仍然不能匹配到重载的函数,则会产生一个编译错误。
|
|
|