C++入门——相关题目

一、选择题

1、下面关于C++缺省参数描述错误的是( ) 【不定项缺省】(多选题)

A、缺省参数是声明或定义函数时为函数的参数指定一个默认值

B、在调用有缺省参数的函数时,如果没有指定实参则采用该默认值,否则使用指定的实参

C、C和C++都支持缺省参数

D、全缺省就是参数全部给缺省值,半缺省就是缺省一半的值

答案:C、D

解析:A、缺省参数就是给出的函数参数的默认值

           B、很明显,这是给出缺省值的意义所在

           C、纯C语言,即.c文件,函数不支持缺省参数,C++即.cpp文件支持

           D、半缺省不能随便缺省一半,必须从右往左缺省,否则编译出错

2、以下不是double compare(int,int)的重载函数的是( ) (单选题)

A、int compare(double,double)

B、double compare(double,double)

C、double compare(double,int)

D、int compare(int,int)

答案:D

解析:A、重载必须是参数列表有所不同(包括个数和类型),所以参数类型不同,构成重载

           B、参数类型不同,构成重载

           C、参数类型不同,构成重载

           D、函数重载不能依靠返回值的不同来构成重载,因为调用时无法根据参数列表确定调用哪个重载函数,故错误

3、下面关于函数重载描述错误的是( ) (多选题)

A、构成函数重载的条件是函数名相同就可以

B、重载的函数参数可以相同

C、重载的函数返回值可以相同

D、C和C++都支持函数重载

答案:A、B、D

解析:A、函数名相同只是函数重载的条件之一

           B、重载函数必须参数列表有所不同(包括参数类型和参数个数)

           C、重载函数不依靠返回值来区分,所以返回值可以相同

           D、C不支持函数重载

4、“引用”与指针的区别是什么( ) (单选题)

A、指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作

B、引用通过某个引用变量指向一个对象后,对它所指向的变量间接操作。程序中使用引用,程序的可读性差;而指针本身就是目标变量的别名,对指针的操作就是对目标变量的操作

C、指针比引用更节省存储空间

D、以上都不正确

答案:A

解析:A、指针是间接操作对象,引用时对象的别名,对别名的操作就是对真实对象的直接操作, 故A正确

           B、很显然,答案刚好相反

           C、指针需要开辟空间,引用不需要开辟空间,故错误

5、关于引用与指针的区别,下面叙述错误的是( ) (单选题)

A、引用必须被初始化,指针不必

B、指针初始化以后不能被改变,引用可以改变所指的对象

C、删除空指针是无害的,不能删除引用

D、不存在指向空值的引用,但是存在指向空值的指针

答案:B

解析:A、引用必须定义时初始化,指针不初始化其值为随机指向

           B、指针可以改变指向,引用不能,故错误

           C、空指针没有任何指向,删除无害,引用是别名,删除引用就删除真实对象

           D、引用必须初始化,所以不能为空引用,指针可以

6、关于引用以下说法错误的是( )。(单选题)

A、引用必须初始化,指针不必

B、引用初始化以后不能被改变,指针可以改变所指的对象

C、不存在指向空值的引用,但是存在指向空值的指针

D、一个引用可以看作是某个变量的一个“别名”

E、引用传值,指针传地址

F、函数参数可以声明为引用或指针类型

答案:E

解析:A、引用必须初始化,必须在定义引用时明确引用的是哪个变量或者对象,否则语法错误,指针不初始化时值为随机指向

           B、引用一旦定义时初始化指定,就不能再修改,指针可以改变指向

           C、引用必须出示化,不能出现空引用,指针可以赋值为空

           D、简单粗暴的引用理解可以理解为被引用变量或对象的"别名"

           E、引用表面好像是传值,其本质也是传地址,只是这个工作有编译器来做,所以错误

           F、函数调用为了提高效率,常使用引用或指针作为函数参数传递变量或对象

7、下面关于C++命名空间描述错误的是( ) (单选题)

A、命名空间定义了一个新的作用域

B、std是C++标准库的命名空间

C、在C++程序中,命名空间必须写成using namespace std;

D、我们可以自己定义命名空间

答案:C

解析:A、命名空间主要解决名字冲突,其作用就是定义一个新的作用域

           B、std是标准命名空间

           C、还有std::xx 和using std::xx来使用标准库中的用法,所以不是必须写using namespace std

           D、可以通过namespace space_name{};定义自己新的命名空间

8、在( )情况下适宜采用 inline 定义内联函数 (单选题)

A、函数体含有循环语句

B、函数体含有递归语句

C、函数代码少、频繁调用

D、函数代码多,不常调用

答案:C

解析:A、含有循环语句,违背内联函数的本质

           B、含有递归语句,违背内联函数的本质

           C、尽可能把代码短小,频繁调用的函数设置为内联函数

           D、含代码量大,违背内联函数的本质

        内联函数是一种建议,如果函数内部包括循环,递归,或者代码量大且复杂,这些函数即使设置了内联函数,系统也不会当做内联函数来处理。

9、关于c++的inline关键字,以下说法正确的是( ) (单选题)

A、使用inline关键字的函数会被编译器在调用处展开

B、头文件中可以包含inline函数的声明

C、可以在同一个项目的不同源文件内定义函数名相同但实现不同的inline函数

D、递归函数也都可以成为inline函数

答案:C

解析:A、不一定,因为inline只是一种建议,需要看此函数是否能够成为内联函数

           B、 inline函数不支持声明和定义分离开,因为编译器一旦将一个函数作为内联函数处理,                    就会在调用位置展开,即该函数是没有地址的,也不能在其他源文件中调用,故一般                      都是直接在源文件中定义内联函数的

           C、inline函数会在调用的地方展开,所以符号表中不会有inline函数的符号名,不存在链接                   冲突.。(如果在同一个项目不同的.c文件定义同名的普通函数就会发生链接错误)

           D、比较长的函数,递归函数就算定义为inline,也会被编译器忽略,故错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值