C++(面试/笔试题目)

1、C++中 struct和class的区别是什么
struct的成员的默认属性是公开的,class的成员的默认属性是私有的

2、C++程序中调用被C编译器编译后的函数,为什么包含extern “C”?
extern是C/C++中的关键字其声明的函数和变量可以在本模块或者其他模块中使用
其次C++作为一种面向对象的语言支持函数重载,而C语言并不支持。比如foo(int i)
C++会生成_fooi这样的函数,也记录了函数名也记录了函数参数数量以及类型信息,而C会生成_foo这样的信息
extern"C"这个声明的真实目的就是解决了名字匹配问题,实现了C/C++的混合编程

3、指针与引用的相同点和不同点
相同点:

  1. 通过传参共享变量
  2. 优化传参效率
  3. 堆内存通过指针/引用与标识符建立联系

不同点

  1. 指针是一个实体,引用是取别名
  2. 指针可以不初始化,引用必须初始化
  3. 程序需要为指针变量分配内存,不必为引用分配内存

4、new/delete和malloc/free有什么区别?new[]/delete[]和new/delete的区别

new/delete ---------- malloc/free ----------- new[]/delete[]
标识符 ----------- 标准库函数---------------创建/销毁多个对象 不可与delete/new混用
自动调用构造/析构函数----不调用构造/析构
自动计算字节数-----需要手动计算字节数
返回带地址类型-----返回void*地址
出错抛出异常----------返回NULL

5、重载、隐藏、覆盖的区别和执行方式
重载:

  1. 同一个作用域下
  2. 函数名字相同
  3. 参数列表不同

覆盖:

  1. 分别位于派生类与基类
  2. 函数签名必须完全相同
  3. 返回值必须是同类或父子类

隐藏:

  1. 子类隐藏父类的标识符(不一定是函数)
  2. 父类有同名标识符,如不构成覆盖且通过编译,则构成隐藏

面向对象的三个基本特征
封装:把抽象的结构归结成一个类,并实例化设置对象的属性调用对象的功能达到解决问题的目的
继承:解决问题前看一下有没有类似的类可以解决问题,如果可以则继承旧的类并拓展
多态:对象的多种形态,向对象发布指令,形象对不同的指令有不同的反应

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值