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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值