参考博客:[C++]C++面试知识总结 - blackwall - 博客园
【C++】面试题目,整理自牛客网_四轩茶屋-CSDN博客_c++ 牛客网
1、sizeof和strlen的区别
- sizeof是运算符,计算数据所占的内存空间;strlen()是一个函数,计算字符数组的字符数。
- sizeof可以用类型作参数;strlen()只能用char*作参数,必须是以‘/0’结束。
- 数组做sizeof的参数不退化,传递给strlen就退化为指针了。
- sizeof是C语言的一种单目操作符,并不是函数。sizeof以字节的形式返回操作数的大小。
2、static的相关说明
static成员变量和static成员函数
- static数据成员独立于该类的任意对象而存在。
- static数据成员(const static数据成员除外)在类定义体内声明,必须在类外进行初始化。
- static数据成员定义放在cpp文件中,不能放在初始化列表中。
- static成员函数在类的外部定义。
- Static成员函数没有this形参。
- 可以直接访问所属类的static成员,不能直接使用非static成员。
- 因为static成员不是任何对象的组成部分,所以static成员函数不能被声明为const。
- static成员函数也不能被声明为虚函数。
static总结
- 函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值。
- 在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
- 在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内。
- 在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝。
- 在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。