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. 重载运算符的函数不能有默认的参数。(√)

相关推荐
Interview Aid1123 小时前
Snowflake OA 面试真题:前缀和、BFS 与动态规划
面试·动态规划·宽度优先
syagain_zsx3 小时前
jsoncpp 使用指南:编译链接、Json::Value 取值与高频坑
c++·json·库·http格式
学顶教育3 小时前
学顶教育:公务员面试常见问题!
面试·职场和发展
布莱克6054 小时前
理解 = delete 与 = default:两种赋值语义的差异
c++
知识分享小能手4 小时前
C学习教程,从入门到精通,C语言文件 — 完整知识点详解(14)
c语言·网络·学习
羊羊一洋4 小时前
ROM&RAM
c语言·stm32·学习
小小、码农5 小时前
[特殊字符]【C++11】类的新功能全面解析:移动构造、移动赋值、default、delete、final 与 override
linux·开发语言·网络·c++
库玛西5 小时前
外部排序全解析:败者树、置换-选择排序与最佳归并树
c语言·数据结构·c++·笔记·考研·算法
库玛西5 小时前
计算机网络第三章:数据链路层
服务器·网络·计算机网络·考研·算法·面试