C++面试常问基础题

1 malloc/free和mew/delete

属性:

  • new、delete是运算符;malloc和free是c++/c的标准库函数,通常对象在创建的时候需要自动执行构造函数,对象在消亡之前要自动执行析构函数,但malloc和free是库函数不是运算符,编译器不能把执行构造函数和析构函数的任务强加给malloc/free

申请情况:

  • malloc在使用时需要显式的指出所需内存的大小
  • new申请分配内存时无需指定内存的大小,编译器会自行计算new可以被重载,malloc不能。

返回值:

  • malloc分配内存失败时返回NULL
  • new内存分配失败时,会调用bac_alloc异常
  • malloc返回的时void *类型指针(必须进行类型转换)
  • new返回的是具体的对象类型指

2 c++宏定义和typedef

  • 1  宏定义主要用于书写复杂的内容;typedef主要用于定义类型别名
  • 2  宏替换发生在编译阶段之前(预处理),属于文件插入替换;typedef是编译的一部分
  • 3 宏不检查数据类型,没有使用作用域,只要是前面定义过,后面就能用;Typedef会检查数据类型,这个有自己的作用域
  • 4 宏定义不是函数语句,不用在后面加分号;typedef是语句,需要加分号 标识结束
  • 5 对指针的操作,有很大区别;二者修饰指针类型时,作用不同。(当const和typedef一起出现时,typedef不会是简单的字符串替换)
Typedef int * pint;

#define PINT int *

Const pint p;//p是指针常量,相当于 int * const p,不可更改,p指向的内容可以更改,;

Const PINT p;//p是常量指针,相当于 const int *p;或 int const *p,可以更改,p指向的内容不能更改,;

pint s1, s2; //s1和s2都是int型指针

PINT s3, s4; //相当于int * s3,s4;只有一个是指针。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑化草莓熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值