一。c++中static的作用
1.隐藏:当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,static函数作用就是为了隐藏
2.可以保持变量的持久:存储在静态数据区的变量会在程序刚开始的时候进行唯一一次初始化,共有两种变量存储在静态存储区:全局变量和静态变量,但是静态变量可以控制可见范围(隐藏)
3.将static变量默认初始化为0
4.c++中应用
(1)不能把静态函数定义为虚函数
(2)静态数据成员是静态存储的,必须对它进行初始化(程序员手动初始化,否则编译不会报错,但是link时会报错)
(3)静态数据成员定义或者说明时前面要加static;
二。const关键字的作用?
1.const修饰变量,指针,引用
2.const修饰成员函数,表示该成员函数不会修改成员变量,常量对象只能调用常量成员函数,普通对象都可以调用
三。static和const能否同时修饰成员函数?
不能,因为static函数为类所有,不属于某一个具体的实例,而const是用于修饰成员函数的,确保成员函数不能修改类中的参数的,会在函数中隐式的添加一个this指针,表示它属于某一个实例。所以他们是矛盾的。
四。const 与指针的应用?
1.const int *a; 常量指针,内容不能变,不能通过*a=b的方式去赋值,但是可以a=&b的方式,重新指定方向
2.int const *a; 常量指针,与上面一样
3.int *const a; 指针常量,指针指向的地址不能变,但是地址上存储的内容是可以变的,(*a=b)(对),但是(a=b)(错)
五。简述虚函数的作用以及底层实现原理?
主要是答出虚函数表和虚函数表指针的作用?c++中虚函数使用虚函数表和虚函数表指针来实现,虚函数表是一个类的虚函数的地址表,用于索引类的本身以及父类的虚函数地址,假如子类的虚函数重写了父类的虚函数,则对应在虚函数表中把对应的虚函数替换为子类的虚函数地址,虚函数表指针存在于每一个对象中(通常为了效率考虑,会放在对象的开始地址处),他指向对象所在类的虚函数表的地址,在多继承环境下,会存在多个虚函数表指针,分别指向不同基类的虚函数表。