C++面试问题

  1. malloc/free与new/delete的区别与联系
  • malloc/free 是c/c++标准的库函数, 需 要 \color{red}{需要} 头文件支持;而new/delete是c++的操作符, 无 需 \color{red}{无需} 头文件支持
  • new建立的是一个对象,所以它做两件事,一是分配内存,二是 调 用 类 的 构 造 函 数 \color{red}{调用类的构造函数} ;同样,delete会调用类的析构函数和释放内存。而malloc和free只是分配和释放内存
  • new可自己计算类型的大小,返回对应类型的指针,而malloc需要手动计算类型的大小,返回的是void*指针
  1. 内联函数

  2. 深拷贝浅拷贝
    假设B复制了A,当修改A时,看B是否会发生变化:如果B也跟着变了,说明这是浅拷贝;如果B没变,那就是深拷贝。
    本质的区别是拷贝出来的对象的地址是否和原对象一样,也就是地址的复制(“位拷贝”,浅拷贝)还是的复制(“值拷贝”,深拷贝)的区别
    一个例子

  3. 什么是常指针,什么是指向常变量的指针?
    答:常指针的含义是该指针所指向的地址不能变,但该地址所指向的内容可以变化,使用常指针可以保证我们的指针不能指向其它的变量,
    指向常变量的指针是指该指针的变量本身的地址可以变化,可以指向其它的变量,但是它所指的内容不可以被修改。指向长变量的指针定义,

  4. 函数指针和指针函数的区别?
    答:函数指针是指向一个函数入口的指针;
    指针函数是函数的返回值是一个指针类型。

  5. 函数重写与重载

  • 定义上的区别
    重载(Overload)是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数;
    重写(Override,也称为覆盖)是指在派生类中重新对基类中的虚函数重新实现。即函数名和参数都一样,只是函数的实现体不一样
  1. .h和.cpp的区别与联系
    .h声明函数,.cpp实现函数具体的功能

  2. static关键字的作用

  1. 虚函数,纯虚函数
  • 虚函数是为了允许用基类的指针来调用子类的这个函数
  • 纯虚函数是为了实现一个接口,起到一个规范的作用,规定继承这个类必须定义/实现这个函数。纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。

数据结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值