C++面试准备(1)

C++面试准备(1),第1张

枚举类 :从零开始

extern : C++支持 分离式编译 将声明与定义分离: 如果想声明一个变量而非定义它,则使用extern关键字,且不能显示地初始化。一般全局函数和全局变量并不会被使用(也不允许)

那么怎么给extern 的变量赋值呢?自己决定,变量只能定义一次,但是可以声明多次:

当你在某个文件中写了 extern int c 时,c已经在某处定义过了,你只是声明,而不是定义。

声明后,你也就可以在这个文件中使用变量c了

预定义(#include) 与 头文件保护符(#ifndef,#define,#endif)

.h 和 .cpp的理解:

头文件一般包含那些智能 被定义一次的实体(类,const, constexpr)

头文件(.h)用来声明, 源文件(eg. XXX.cpp要#include "XXX.h")用来定义

而名字相同的.h 和 .cpp 称作一个package

使用的时候只需要#include "XXX.h"而不用#include .cpp

inline限定符:用inline修饰一个函数a后,当调用到a的时候,编译器在编译时会直接展开,而不是像调用普通函数一样生成一个栈帧,能够提高代码效率,但是只适用于短代码

void* 指针 : 它可以存放任意类型的地址,但是我们并不知道这个地址是什么类型,所以无法访问这个地址的对象

可以使用 static_cast 强制转换void*成别的类型指针

void* p = &d;

eg:  double dp* = static_cast  (p)

static_cast:强制类型转化, 一般情况下,把一个较大的算数类型赋值给较小的类型的时候,编译器会出现warning,但是, 使用static_cast 后,就不会报错,相当于显式地告诉编译器,我们不在乎这部分精度损失

new与delete :调用构造函数(XXX)与析构函数(~XXX)

malloc 和 free 

继承的好处:易扩展。避免代码冗余

继承中的构造与析构函数:

不论怎么继承,static静态成员始终只有一个

重载与重写:

重载: 拥有同名但不同参数列表(参数类型,顺序,个数) 的 函数

重写: 继承基类,覆盖基类的虚函数,后面加一个override

重写反映了C++的多态性,体现在面向对象中,但是重载不止出现在类中,其他地方也可以出现

重载的概念出现在同一个作用域中,无法以返回值区分两个函数

有人说,不要对继承下来的成员函数进行重载,但是可以对继承下来的函数进行重载

虚函数与纯虚函数:

虚函数没有一定要求重写,但是纯虚函数一定要重写 ,且含有纯虚函数的类叫抽象类,抽象类不能被实例化。

编译过程:

C++内存模型:

静态:

静态函数只能使用静态变量

const函数可以使用非const变量吗:

可以 ,const加在后面的函数(类中)叫做常成员函数,可以使用该类的所有成员,但是不能做任何修改

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1323899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存