C++面试常见问题

1. 引用和指针的区别

相同点:引用和指针都是地址的概念。引用是一个内存对象的别名,指针指向内存对象,保存了这个对象的内存地址。

区别:(1)引用不能为空,指针可以为空

    (2)引用必须初始化,指针不需要

            (3)引用初始化以后不能改变,指针可以改变初始化对象后的值

            (4)引用访问对象后是直接访问,指针访问对象是间接访问

            (5)引用大小是所引用对象的大小,指针大小是指针类本身的大小

            (6)引用没有const, 指针有const

            (7)引用和指针的++运算符 

            (8)引用不需要分配内存空间,指针需要。

2. 虚函数实现的基本原理

每一个虚函数(无论本身还是继承而来)的类都至少有一个与之对应的虚函数表,其中放着该类所有虚函数对应的函数指针。

作用是实现了多态的机制,父类指针调用实际子类的成员函数。可以让父类的指针有多种形态(实现多态所必须的,父类类型指针指向子类实例,执行会执行子类定义的函数)

        析构函数必须是虚函数,构造函数不能是虚函数。

3. 多态的实现

根据虚函数表找到恰当的虚函数,对于一个父类对象指针类型变量,给父类指针调用父类的函数,给子类对象指针,调用子类中的函数。

4. struct和class区别

大体相似,区别是访问权限,struct访问的是public,class默认访问的是private。

5.描述内存分配方式以及区别

(1)静态存储区域分配,内存在编译时已经分配好了,例如全局变量,static变量

(2)在栈上创建,执行函数时,内部局部变量存储单元在栈上创建,结束时释放。

(3)在堆上创建:动态内存分配,运行时用malloc或new 申请任意内存,自己控制free 或delete。

6. 数组和指针区别?

数组要么在静态存储区被创建,要么在栈上被创建。指针可以随时指向任意类型内存块。

指针内存只有指针变量字节数。

7. static和const分别怎么用?

static:全局变量定义为一个全局静态变量。

内存中的位置:静态存储区(整个程序期间都存在)

初始化:未初始化为0

作用域:申明文件之外不可见

const: (1)限定变量为不可修改

    (2)限定成员函数不可修改任何数据成员

8. 内联函数和宏的差别

    内联函数在编译可以直接嵌到目标代码中,宏只是一个简单的替换。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值