2017年相关概念题

填空题

  1. 如果每次运行环境只能执行一条语句,但是有许多语句需要执行,那么用花括号{}括起来,构成语句块
  2. 标识符的作用域有局部作用域函数原型作用域类作用域命名空间作用域
  3. 用字符串"schedule"初始化一个字符数组的初始化语句;
    char s[] = { "schedule" };
    char s[] = "schedule";
    char s[] = { 's', 'c', 'h', 'e', 'd', 'u', 'l', 'e', '\0' };
  1. 哪几个运算符必须重载为成员函数:赋值运算符"="取下标运算符"[]"成员访问运算符"->"函数运算符"()"

什么是"else摇摆"问题,举例说明

C++规定else与它最近的尚未匹配的if匹配,有时可能缩进正确,而匹配的if确不如本意。例如:

    if(x > 0)
        if(x < 3)
            /****/
    else
        /****/

其中else匹配的则是"x<3"的if,在x>=3的时候进入else,而非x<=0时进入else。

函数模板与函数重载的区别与联系

区别

  1. 函数模板本身在编译时不会生成任何目标代码,只有由模板生成的实例会生成目标代码;函数重载会生成目标代码;
  2. 被多个源文件引用的函数模板,应当连同函数体一同放在头文件中,不能像普通函数那样只将声明放在头文件中;函数重载的时候可以将声明和定义分别放在头文件和源文件中;
  3. 函数指针只能指向该模板的实例,不能指向模板本身;函数指针可以指向重载的函数;

联系

从函数模板产生的相关函数都是同名的,编译器用重载的方法调用相应的函数,函数模板本身也可以用多种方式重载。

虚函数和纯虚函数的区别,两者的作用

两者在声明的时候形式不同,如下所示:

    virtual void fun();    // 虚函数
    virtual void fun() = 0;// 纯虚函数

同时,纯虚函数根本没有函数体,但是基类中仍然允许对虚函数给出实现,而即使给出实现,也必须由派生类覆盖,否则无法实例化;对比之下,虚函数是有函数体的,只是函数体可以为空。

两者的作用有所不同。带有纯虚函数的类是抽象类,其主要作用是通过它为一个类族建立一个公共的接口,使他们能够更有效地发挥多态特性,抽象类声明了一个类族派生类的共同接口,而接口的完整实现,即纯虚函数的函数体,需要派生类自己定义;虚函数的主要作用是实现运行时多态,通过基类指针或引用与派生类对象建立联系,就可以使同样的消息对于不同派生类的不同对象产生不同的行为。

面向对象的程序"接口与实现方法分离"的优点

接口定义并标准化了客户使用该类功能的使用方法,而这些功能的具体实现对于客户而言是不可见的,达到了信息隐藏,使得客户不会写出依赖于类的实现细节的客户代码。同时,程序维护更加方便,只要类的接口不变,类的实现的改变不会影响客户。

列出所有与字符串处理有关的头文件

cstring包含C++对C风格字符串的相关函数的声明,string中是C++中string类的相关声明,cctype中是C风格字符分类的一些函数,sstream中是C++字符串流的相关函数。

posted @ 2020-03-12 12:38  southernEast  阅读(565)  评论(2)    收藏  举报