【c++基础】c++常见面试问题
1、const 2、static 3、volatile 4、extern 5、new & malloc 6、delete & delete[] 7、strlen & sizeof 8、内存对齐 9、零值比较 10、指针和引用的区别 11、指针与数组 12、指针类型问题 13、智能指针是怎么实现的?什么时候改变引用计数? 构造函数中计数初始化为1; 拷贝构造函数中计数值加1; 赋值运算符中,左边的对象引用计数减一,右边的对象引用计数加一; 析构函数中引用计数减一; 在赋值运算符和析构函数中,如果减一后为0,则调用delete释放对象。 share_prt与weak_ptr的区别? 14、c++多态性和虚函数表 C++多态的实现? 虚函数的作用? 虚函数用于实现多态,这点大家都能答上来但是虚函数在设计上还具有封装和抽象的作用。比如抽象工厂模式。 动态绑定是如何实现的? 静态多态和动态多态。静态多态是指通过模板技术或者函数重载技术实现的多态,其在编译器确定行为。动态多态是指通过虚函数技术实现在运行期动态绑定的技术。 虚函数表 虚函数表是针对类的还是针对对象的?同一个类的两个对象的虚函数表是怎么维护的? 编译器为每一个类维护一个虚函数表,每个对象的首地址保存着该虚函数表的指针,同一个类的不同对象实际上指向同一张虚函数表。 纯虚函数如何定义,为什么对于存在虚函数的类中析构函数要定义成虚函数