c++ 面试错题整理

  1. 在C++中,下列哪个语句用于定义一个字符串变量?(D)

    A. string myString;

    B. char myString[];

    C. String myString;

    D. char* myString;

    关于为什么不是A,我猜测可能是因为string本质上是一个类。

  2. C++中的引用与指针有什么区别?(C)

    A. 引用必须初始化,指针可以不用初始化。

    B. 引用可以被重新赋值,指针不能。

    C. 引用不能为NULL,指针可以。

    D. 以上都是

    我对这个答案持怀疑态度,我查了一下,A是没问题的,主要是B,指针可以重新赋值,但是引用不可以。但是这个题是个单选题。
    https://blog.csdn.net/RuanJian_GC/article/details/128977503

  3. 下面对于友元的错误描述是(D)

    A. 关键字friend用于声明友元

    B. 一个类中的成员函数可以是另一个类的友元

    C. 友元函数访问对象的成员不受访问特性影响

    D. 友元函数通过this指针访问对象

    友元函数可以是不属于任何类的非成员函数,也可以是另一个类的成员函数,因此B没有问题。

    这个友元函数他不属于该类的成员函数,他是定义在类外的普通函数,只是在类中声明该函数可以直接访问类中的private或者protected成员,所以友元函数访问对象的成员不受访问特性影响,C没有问题

    友元函数通过引用访问对象,D错误
    https://blog.csdn.net/qq_26337701/article/details/53996104

  4. 下列哪个关键字用于定义多重继承?(C)

    A. extends

    B. derives

    C. inherits

    D. virtual

    我知道inherits这个词是多继承的意思,但是我还真不知道它是个关键字,查了一下没查明白,待补充

  5. 在C++中,使用*表示什么?(B)

    A. 乘法运算符

    B. 指针运算符

    C. 取模运算符

    D. 自增运算符

    我查了一下确实有指针运算符这个说法,但是乘法运算符又有哪里不对?

  6. 在下列函数原型中,可以作为类AA构造函数的是(A)

    A. void AA(int);

    B. int AA();

    C. AA(int);

    D.AA(int)const;

    构造函数没有返回类型,我还是觉得正确答案为C

  7. 静态成员函数没有(C)

    A. 返回值

    B. this指针

    C. 指针函数

    D. 返回类型

    静态成员函数可以有指针函数

    但是静态成员函数没有隐藏的this指针,因为静态成员函数属于整个类所有。

  8. 关于函数模板,描述错误的是(A)

    A. 函数模板必须有程序员实例化为可执行的模板函数

    B. 模板函数的实例化有编辑器实现

    C. 一个类定义中,只要有一个函数模板,则这个类是类模板

    D. 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

    一个类定义中可以包含一个或多个函数模板,但是这并不意味着该类本身是一个类模板。类模板是用来生成多个具体的类的模板,其中每个具体类都定义了特定类型的数据成员和函数成员。类模板的定义通常以类名和模板参数列表开头,例如template class MyClass {...}。而一个普通的类定义只需要包含类名和类成员的声明,例如class MyClass {...}。

    函数模板是一类通用的函数定义,可以接受不同类型的参数,但是只有在程序员将其实例化为具体的类型之后,它才能成为可执行的模板函数。

    实例化是指将函数模板中的类型和值替换为实际类型和值的过程。在实例化时,编译器会根据函数调用提供的参数类型和值来生成特定的函数定义。

    我还是觉得答案应该选C

  9. 下列函数中,可以作为虚函数的是(B D)

    A. 普通函数

    B. 非静态成员函数

    C. 构造函数

    D. 析构函数

    析构函数可以且常常是虚函数

    此时 vtable 已经初始化了,完全可以把析构函数放在虚函数表里面来调用。C++类有继承时,基类的析构函数必须为虚函数。如果不是虚函数,则使用时可能存在内存泄漏的问题。 虚函数是用于多态和继承的,和普通函数没什么关系

  10. 在C中,使用override关键字可以重写父类函数。(√)

    我对这个答案持疑,override关键字应该是C++中才有的

  11. 转换构造函数的作用是将一个其他类型的数据转换成一个类的对象。(√)

    转换构造函数,将其它类型转换为当前类类型

  12. 类的静态数据成员可以初始化,但只能在类体外进行初始化。(√)
    https://blog.csdn.net/weixin_43142797/article/details/104942986

  13. 指定文件的工作方式是在文件读写之前必须要做的工作。(√)

  14. cerr中的信息存放在缓冲区,缓冲区满后或遇endl时向显示器输出。(√)

    cerr不经过缓冲而直接输出,一般用于迅速输出出错信息,是标准错误,默认情况下被关联到标准输出流,但它不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示。答案持疑。

  15. 重载运算符的函数不能有默认的参数。(√)

相关推荐
爱吃生蚝的于勒44 分钟前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
小白学大数据3 小时前
Python爬虫开发中的分析与方案制定
开发语言·c++·爬虫·python
失落的香蕉4 小时前
C语言串讲-2之指针和结构体
java·c语言·开发语言
versatile_zpc5 小时前
C++初阶:类和对象(上)
开发语言·c++
小鱼仙官5 小时前
MFC IDC_STATIC控件嵌入一个DIALOG界面
c++·mfc
神仙别闹5 小时前
基本MFC类框架的俄罗斯方块游戏
c++·游戏·mfc
ChoSeitaku6 小时前
链表循环及差集相关算法题|判断循环双链表是否对称|两循环单链表合并成循环链表|使双向循环链表有序|单循环链表改双向循环链表|两链表的差集(C)
c语言·算法·链表
娅娅梨6 小时前
C++ 错题本--not found for architecture x86_64 问题
开发语言·c++
DdddJMs__1356 小时前
C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
c语言·leetcode·题解
兵哥工控6 小时前
MFC工控项目实例二十九主对话框调用子对话框设定参数值
c++·mfc