C++高频面试题

时间:2022-09-05 23:00:01

1.++i和i++哪个效率更高?

前缀式可以返回对象的引用,而后缀式必须返回对象的值所以导致在大对象产生时产生了较大的复制开销,因此处理自定义类型的时候尽量使用前缀式。

2.不使用任何中间变量将a、b的值进行交换。

a ^= b;
b ^= a;
a ^= b;

C++与C有什么不同

相对于C,C++多了重载、内联函数、异常处理,扩展了面向对象的设计内容:类、继承、虚函数、模板。

如何理解C++是面向对象的,而C是面向过程的

C++并不是完全的面向对象,它也可以写出面向过程的代码,只是拥有面向对象的特性。

标准头文件的结构

#include<>和#include”“有什么区别

C++main函数执行完之后还会执行其他的语句吗?

定义一个宏来实现求最大值和最小值

#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define MIN(x,y) ((x) < (y) ? (x) : (y))

定义一个宏来得到一个字的高位字节和低位字节

#define WORD_LOW(xxx) (byte)((word)(xxx)&255)
#define WORD_HI(xxx) (byte)((word)(xxx)>>8)

定义一个宏得到一个数组所含元素的个数

#define ARR_SIZE(a) (sizeof((a)) / sizeof((a[0])))

说明const和define的特点及区别

C++中cosnt的三个作用

  • 用于定义常量
  • 修饰函数的形参
  • 修饰函数的返回值
  • 修饰类的成员函数

static的作用

  • 函数体内声明静态变量,
  • 函数体外,模块内声明静态变量,可以被模块内的所有函数都访问到。
  • 模块内声明的静态函数只能被该模块内的函数调用。

sizeof和strlen的区别

  • sizeof是操作符,而strlen是函数
  • sizeof可以以类型作为参数,而strlen只能以字符串的首地址作为参数。
  • 数组作sizeof的参数不退化,而作strlen的参数会被退化为指针。
  • 大多数的编译器会在编译期计算出sizeof的长度,而strlen的结果要等到运行期才会计算出来。
  • sizeof后如果是类型,则必须要加括号,如果是变量名,则不必加括号。
  • 在计算字符串数组的长度上有区别
  • 如果要计算指针指向的字符串的长度,一定要用strlen

sizeof有那些用途

  • 与存储分配和I/O操作相关的系统接口进行通信
  • 查看某个对象在内存单元中所占的单元字节
  • 动态分配对象时,让系统知道需要多少字节
    etc

 #pragma的作用

C++中引入内联函数的原因

  • 替代C语言中的宏来解决调用效率的问
  • 宏定义不能对参数的有效性进行检查,返回值也不能被保证转化为合适的类型
  • 内联函数可以具有访问控制的功能

为什么不把所有的函数都定义成内联函数

  • 如果函数体内的代码过长,使用内联将导致内存消耗的代价比较高
  • 如果函数体内出现了循环,使用内敛将导致消耗代价较高
  • 递归函数不能定义成内联函数

指针和引用的区别

  • 引用必须在创建的同时初始化
  • 引用一旦指向一个对象就不可变更
  • 引用不能指向NULL
    Tips:在二进制的层面,引用一般通过指针来实现。

指针常量与常量指针的区别

  • 指针常量:是指针的常量,本质是常量 int * const i;
  • 常量指针:是常量的指针,本质是指针 const int* i / int const * i

指针数组与数组指针的区别

函数指针与指针函数的区别

typedef 定义函数指针

什么是野指针

有了malloc和free为什么还要new和delete

动态内存的传递

内存分配的几种方式

——————————

面向对象技术的基本概念

class与struct的区别

与全局对象相比,使用静态数据成员有什么优势

哪几种情况只能用初始化列表,而不能用赋值

main函数开始之前还会执行什么代码?

C++中的空类会产生哪些成员函数

析构函数和构造函数是否可以被重载

虚析构函数的作用

赋值构造函数的作用,什么是深复制,什么是浅复制。

复制构造函数与赋值函数的区别

编写一个String类

什么是临时对象?什么时候产生?

重载和覆盖的区别

C++类继承的三种关系

私有继承的作用

什么是多态

虚函数的实现机制

构造函数调虚函数

为什么需要多重继承,它的优缺点各是什么?

引入抽象基类和纯虚函数的原因

虚函数和纯虚函数的区别

#