c++面试常见题·Part 1 基础

  • new&delete、malloc&free

都能动态申请内存和释放内存

malloc&free是标准库函数,new&delete是运算符,对于非内部数据类型的对象而言,只有new,delete能自动调用对象的构造函数和析构函数

  • 指针和引用

指针指向变量的地址,引用是变量的别名,

引用不占内存单元,指针本身占4字节

引用必须初始化,并在初始化后不能修改,而指针可以不初始化,还可以修改,不存在指向空值的引用,但存在指向空的指针

指针可以有多级int **a,引用只有一级

  • 一般变量,指针,引用做函数参数的区别

一般变量和指针作为形参都要单独分配内存空间,引用是直接对实参进行操作

引用和指针都能改变实参

  • c++性质

(静态多态)编译时多态:函数模板和函数重载

(动态多态)运行时多态:虚函数:允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数

           纯虚函数就是虚函数=0,含有纯虚函数的类被称为抽象类,必须要在子类中实现

           两者不能被static修饰,因为它们需要动态绑定

继承:重用代码,子类可以使用父类的功能

封装:提供接口,隐藏实现细节

  • const位置,const和define

  常变量:  const int a = int const a

  常引用:  const int &a = int const &a

  常对象:  A const a = const A a 

  常成员函数:  类名::fun(形参) const

  常数组:  int const array[大小] = const int array[]

  常指针:  const int* a 常量指针,不能修改它所指向的内容,int* const a指针常量,不能指向其他的内存模块  (看const和*位置)

  • 内存分配

栈:编译器自动分配释放 ,有局部变量,函数参数,不会产生碎片,向着内存地址减少的方向增长

堆:程序员手动分配,通过new申请,delete、delete[]释放,会产生碎片,向着内存地址增加的方向增长

全局/静态存储区:全局变量和静态变量

常量存储区:常量

代码区:二进制代码

  • sizeof 和strlen

sizeof:只计算数据成员大小,不计算static成员

struct{

int a;

short b;

char c;

inr *d;

} 4+2+1+(1)+4=12 原因:补齐长度,与下一个所占空间大小成倍数关系

strlen:返回字符串长度 不包括‘\0’

  • 内联函数

内联函数使用时=直接将整个函数体的代码插人调用语句处,提高代码可重用性,但增加了代码体积

  • 友元

友元(frend)机制允许一个类将对其非公有成员的访问权授予指定的函数或者类

分友元函数和友元类

  • 构造函数和析构函数调用顺序

构造函数:父类->类成员->基类

析构函数:基类->类成员->父类

  • 从源代码到可执行文件的过程

预编译-》汇编-》编译-》链接

  • include<>和" "的区别

<>从标准库中开始查找

“”从用户指定路径开始查找

  • extend C的作用 

为了能够正确实现C++代码调用其他C语言代码

  • 模板template
  • 智能指针

auto_ptr:方便管理单个堆对象的内存(最好不要用)

unique_ptr:方便管理堆对象或者堆对象数组的内存

shared_ptr:方便管理需要共享所有权的内存

weak_ptr:weak_ptr是shared_ptr的观察者,负责从shared_ptr产生一个weak_ptr但是不会增加引用计数,当shread_ptr失效以后,weak_ptr也会失效

  • C++11特性

1)关键字 auto nullptr 

2)lambda表达式

STL array 单向列表slist  哈希map,set

增加了多线程编程pthread

智能指针

function(函数包装器,可以放下一切可调用之物)   bind(函数适配器,改变函数的接口) 

  • 关键字:

static :①静态全局变量,存储在静态数据区内,作用于为本文件内,及时被extern修饰也不能

②修饰类的成员函数和成员变量时:属于整个类,不属于对象,为各个对象所共享

类外存储,只能在类外初始化

静态成员函数只能访问静态成员变量,没有this指针

auto :必须初始化,系统会根据初始化的变量类型自动确定该变量的数据类型

register 

vilotile 易变的意思,主要用于多线程中,读取该变量当前最新值,不需要编译器做优化处理

  • 运算符重载

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值