1. malloc/free 和 new/delete 的区别 2. 虚函数表和虚函数表指针的创建时机 3. c++ 什么时候生成默认拷贝构造函数 4. c++ 面对对象的三大特征以及相关特性 5. 你了解过哪些设计模式
时间: 2024-05-24 17:10:41 浏览: 128
C/C++笔试题
1. malloc/free 和 new/delete 的区别:
malloc/free 是 C 语言中的内存分配和释放函数,而 new/delete 是 C++ 中的内存分配和释放操作符。malloc/free 只负责分配和释放内存空间,而 new/delete 不仅负责分配和释放内存空间,还会调用构造函数和析构函数。此外,new/delete 的使用更加简洁,可以避免一些内存管理的问题。
2. 虚函数表和虚函数表指针的创建时机:
虚函数表是在编译阶段由编译器生成的,每个类都有一个虚函数表。虚函数表指针是在对象实例化时创建的,指向该类的虚函数表。当调用一个虚函数时,会根据对象的虚函数表指针找到该类的虚函数表,再根据函数在虚函数表中的位置调用相应的函数。
3. C++ 什么时候生成默认拷贝构造函数:
当一个类没有显式定义拷贝构造函数时,编译器会生成一个默认的拷贝构造函数。默认的拷贝构造函数会按照位拷贝的方式进行复制操作,即将原对象的所有成员变量复制到新对象中。
4. C++ 面对对象的三大特征以及相关特性:
C++ 面向对象的三大特征是封装、继承和多态。封装可以将数据和行为封装到一个对象中,保护数据不受外部干扰,提高代码的安全性和可维护性;继承可以让子类继承父类的数据和行为,并可以添加新的数据和行为;多态可以让不同的对象对同一消息作出不同的响应,增强了程序的灵活性和扩展性。
5. 你了解过哪些设计模式:
常见的设计模式包括单例模式、工厂模式、适配器模式、装饰器模式、观察者模式、策略模式、模板方法模式等。这些设计模式都是在解决不同的问题时经过实践总结出来的经验,可以提高代码的可重用性、可维护性和可扩展性。
阅读全文