C++面试题目一(相关链接整理)
一、基础知识
1、基本语言
1、说一下static关键字的作用
传送门:https://www.cnblogs.com/biyeymyhjob/archive/2012/07/19/2598815.html
个人理解:a.所有未加static的全局变量和函数具有全局可见性。加了static,就会对其源文件隐藏。而对于函数来讲,static的作用就仅仅局限于隐藏。
b.保持变量内容的持久。(static变量中的记忆功能和全局生存期)程序开始时的初始化将静态存储区中的全局变量和static变量,而static控制其可见范围。说到底还是隐藏。
如果作为static局部变量在函数内定义,它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。
退出该函数后, 尽管该变量还继续存在,但不能使用它.
c.将变量初始化为0(如稀疏矩阵的初始化)。
d.C++中的类成员声明static: 1.类的静态成员函数属于类而非类的对象,没有this指针,所以仅能访问类的静态数据和静态成员函数。
2.不能将静态成员函数定义为虚函数。
3.静态数据成员必须被初始化,因为其是静态存储的。
4.静态成员初始化一般在类体外进行,前面不加static,初始化时不加成员访问权限控制符(public private等)
5.节省子类对父类静态成员的访问时间,节省了子类的内存空间。
6.在子类定义一个和父类相同的静态变量可以屏蔽父类的影响(name-mangling)
2.C++和C的区别
传送门:https://blog.csdn.net/bitboss/article/details/62884694
3.C++中四种cast转换
传送门:https://blog.csdn.net/caroline_wendy/article/details/19042529
4.判断一个点在三角形中并用代码实现
传送门:https://www.cnblogs.com/graphics/archive/2010/08/05/1793393.html
5.怎么判断一个数是2的倍数,求一个数中有几个1,说一下思路并手写代码
我猜: 最蠢的办法可以第一个模2为0则是,第二个模10然后判断是否为1,搞个计数器来计数就行/或:如果是求二进制表达中有几个1的话,可以用位运算,和1做&运算。
6.STL中容器的底层实现
https://blog.csdn.net/single_wolf_wolf/article/details/52854015