C&C++面试题之三(每次10题)

本文阐述了设计模式和框架之间的区别,设计模式适用于面向对象的问题域,而框架则针对具体的业务场景。文中还讨论了C++特性如虚函数、多态及模板等,并解释了它们在软件设计中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 说说框架与设计模式的区别
    • 设计模式和框架针对的问题域不同.设计模式针对面向对象的问题域;框架针对特定业务的问题域
    • 设计模式比框架更为抽象.设计模式在碰到具体问题后,才能产生代码;框架已经可以用代码表示
    • 设计模式是比框架更小的体系结构元素.框架中可以包括多个设计模式
    • 设计模式就像武术中基本的招式.将这些招式合理地纵组合起来,就形成套路(框架),框架是一种半成品.
  2. C++和C定义结构的分别是什么?
    • C language 的结构仅仅是数据的结合
    • C plus plus的struct 和 class 其实具备几乎一样的功能,只是默认的访问属性不一样而已。
  3. 构造函数可否是虚函数,为什么?析构函数呢,可否是纯虚的呢?
    • 构造函数不能为虚函数,要构造一个对象,必须清楚地知道要构造什么,否则无法构造一个对象。
    • 析构函数可以为纯虚函数。
  4. 拷贝构造函数相关问题,说说深拷贝,浅拷贝,临时对象分别是什么意思?
    • 深拷贝意味着拷贝了资源和指针,而浅拷贝只是拷贝了指针,没有拷贝资源
    • 这样使得两个指针指向同一份资源,造成对同一份析构两次,程序崩溃。
    • 临时对象的开销比局部对象小些。
  5. 结合1个你认为比较能体现OOP思想的项目,用UML来描述。(最好这个项目继承,多态,虚函数都有体现)这个问题大概会占面试时间的一半,并且会问很多问题,一不小心可能会被问住)
    • 使用一下以前用的mplsLdp的类
  6. 基类的有1个虚函数,子类还需要申明为virtual吗?为什么?
    • 不申明没有关系的。
    • 不过,我总是喜欢显式申明,使得代码更加清晰。
  7. C也可以通过精心封装某些函数功能实现重用,那C++的类有什么优点吗,难道仅仅是为实现重用。
    • 并不仅仅是这样的。OOD,OOP从根本上改变了程序设计模式和设计思想,具备重大和深远的意义。【这点应该要再更详细的说明一下】
    • 类的三大最基本的特征:封装,继承,多态.
    • OOD: object-oriented design; OOP: object-oriented program
  8. C++特点是什么,如何实现多态?画出基类和子类在内存中的相互关系。
    • 多态的基础是继承,需要虚函数的支持,简单的多态是很简单的
    • 子类继承父类大部分的资源,不能继承的有构造函数,析构函数,拷贝构造函数,operator=函数,友元函数等等
  9. 为什么要引入抽象基类和纯虚函数?
    • 主要目的是为了实现一种接口的效果。
    • 代码重用,为以后的开发用户提供一个良好的接口
  10. 介绍一下模板和容器。如何实现?(也许会让你当场举例实现)
    • 模板可以说比较古老了,但是当前的泛型编程实质上就是模板编程。
    • 它体现了一种通用和泛化的思想。
    • STL有7种主要容器:vector,list,deque,map,multimap,set,multiset.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值