20210531-C++面试

1.C++语言的特点?(面向对象:封装、继承、多态)

2.虚函数表里存放的内容是什么时候写进去的?
在编译期写入
虚表指针->虚函数表(虚函数表里存放的是函数指针)

3.单例模式的构造函数?单例模式的创建过程?如何保证线程安全?
1).使用静态成员变量,构造函数和普通构造函数一样
2).构造函数私有,只有类内代码可以调用

4.C++中的智能指针?三种指针解决的问题以及区别?
share_ptr智能指针,利用引用计数和栈区对象释放调用析构函数的特性,创建的智能指针。为了解决内存泄漏问题。但是share_ptr不能很好的解决智能指针循环引用的问题,weak_ptr是为了解决这个问题而设计的。weak_ptr只能从share_ptr和weak_ptr中构造,引用时不增加引用计数,但是不能单独使用,需要调用lock,将weak_ptr转成share_ptr才能用。使用前需要判断对象是不是已经被释放了。
unique_ptr,不能共享指针,某个时刻只能有一个unique_ptr指向一个对象,当unique_ptr被销毁时,它指向的对象也将被释放。可以使用拷贝和赋值一个即将被销毁的unique_ptr,如函数返回一个unique_ptr
unique_ptr get_result()
{
unique_ptr up(new int(100));
return up;
}

5.new和malloc之间有什么区别࿱

你可能感兴趣的:(c++)