前言
作者:小蜗牛向前冲
名言:我可以接受失败,但我不能接受放弃
如果觉的博主的文章还不错的话,还请
点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正
下面主要是总结一下在C++常见面试题: 主要常用问答的方式回答,目的是了梳理回答思路,更好应对面试官的提问。
1、同学你知道大小端吗?你如何去写代码验证?
答:
- 大小端指的是计算机存储多字节序的顺序
- 大端存储指的是高地址存放着低字节处,低地址存放着高字节处
- 小端存储是与大端存储相反(高地址->高字节,低地址->低字节)
比如数字0x12 34 56 78在内存中的表示形式
大端字节序:
低地址 --------------------> 高地址
0x12 | 0x34 | 0x56 | 0x78
小端字节序:
低地址 --------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12
代码实现:
简单来说,取一个int 类型,比如0x1234,强制转换为char类型,讲能截断来拿到低地址处的一个字节,如果显示是0x12就是大端,0x34讲是小端。
//测试大小端
void test()
{
int a = 0x1234;
char b = static_cast<char> (a);//将int类型强制转化为char类型,方便判断存储位置取出前一个字节
if (b == 0x12)
{
cout << "大端字节序" << endl;
}
else
{
cout << "小端字节序" << endl;
}
}
2、当我们给一个变量加上static关键字修饰会和原来有什么不一样?
答:
当变量在函数内部,类内部,全局变量,造成的影响是不同的。
- 当在函数内部的变量被static修饰:
该变量的生命周期由局部变为整个程序的生命周期,也就是说当函数调用后被销毁,该变量会保留直到程序结束。
- 当在类中的成员变量和成员函数:
当成员变量被生命为static的时候,该变量是对所有类的实例是共享的。
当static修饰成员函数的时候,成员函数没有了this指针,该函数即使没有类实例的情况也可以被调用。
- 当类修饰的全局变量:
给全局变量的作用用域,限制为在本头文件下。
总结:总的来说对于static关键字修饰后的影响会和上下文的情况不同而不一样,但是他的核心影响是改变了变量的生命周期和作用域 。
3、类的构造函数可以是虚函数吗?为什么说析构函数必须声明为虚函数
答:
- 构造函数肯定不能是虚函数:
构造函数是用来初始化对象的,在对象还没有完全构造完成之前,虚函数指针和虚表可能还没有被正确初始化。如果构造函数是虚函