2017年相关概念题
填空题
- 如果每次运行环境只能执行一条语句,但是有许多语句需要执行,那么用花括号{}括起来,构成语句块;
- 标识符的作用域有局部作用域、函数原型作用域、类作用域、命名空间作用域;
- 用字符串"schedule"初始化一个字符数组的初始化语句;
char s[] = { "schedule" };
char s[] = "schedule";
char s[] = { 's', 'c', 'h', 'e', 'd', 'u', 'l', 'e', '\0' };
- 哪几个运算符必须重载为成员函数:赋值运算符"="、取下标运算符"[]"、成员访问运算符"->"和函数运算符"()"
什么是"else摇摆"问题,举例说明
C++规定else与它最近的尚未匹配的if匹配,有时可能缩进正确,而匹配的if确不如本意。例如:
if(x > 0)
if(x < 3)
/****/
else
/****/
其中else匹配的则是"x<3"的if,在x>=3的时候进入else,而非x<=0时进入else。
函数模板与函数重载的区别与联系
区别
- 函数模板本身在编译时不会生成任何目标代码,只有由模板生成的实例会生成目标代码;函数重载会生成目标代码;
- 被多个源文件引用的函数模板,应当连同函数体一同放在头文件中,不能像普通函数那样只将声明放在头文件中;函数重载的时候可以将声明和定义分别放在头文件和源文件中;
- 函数指针只能指向该模板的实例,不能指向模板本身;函数指针可以指向重载的函数;
联系
从函数模板产生的相关函数都是同名的,编译器用重载的方法调用相应的函数,函数模板本身也可以用多种方式重载。
虚函数和纯虚函数的区别,两者的作用
两者在声明的时候形式不同,如下所示:
virtual void fun(); // 虚函数
virtual void fun() = 0;// 纯虚函数
同时,纯虚函数根本没有函数体,但是基类中仍然允许对虚函数给出实现,而即使给出实现,也必须由派生类覆盖,否则无法实例化;对比之下,虚函数是有函数体的,只是函数体可以为空。
两者的作用有所不同。带有纯虚函数的类是抽象类,其主要作用是通过它为一个类族建立一个公共的接口,使他们能够更有效地发挥多态特性,抽象类声明了一个类族派生类的共同接口,而接口的完整实现,即纯虚函数的函数体,需要派生类自己定义;虚函数的主要作用是实现运行时多态,通过基类指针或引用与派生类对象建立联系,就可以使同样的消息对于不同派生类的不同对象产生不同的行为。
面向对象的程序"接口与实现方法分离"的优点
接口定义并标准化了客户使用该类功能的使用方法,而这些功能的具体实现对于客户而言是不可见的,达到了信息隐藏,使得客户不会写出依赖于类的实现细节的客户代码。同时,程序维护更加方便,只要类的接口不变,类的实现的改变不会影响客户。
列出所有与字符串处理有关的头文件
cstring包含C++对C风格字符串的相关函数的声明,string中是C++中string类的相关声明,cctype中是C风格字符分类的一些函数,sstream中是C++字符串流的相关函数。

浙公网安备 33010602011771号