1

1.C组合与继承,优缺点。
答案:组合和继承都是面向对象中的两种代码复用方式。组合是a是b的一部分,不允许b从a派生,在新类中创建原有类
的对象。继承则说明b是a的一种,并且a的所有行为对b都有意义。组合和继承都允许在新的类中设置子对象,只是组合
是显示的,继承是隐式的。继承结构中,父类的内部细节对于子类是可见的,属于白盒式代码复用。

继承的优点:容易进行新的实现,因为其大多数可继承而来。容易修改或者扩展那些被复用的实现。继承的缺点:破坏了封装性,因为这会将父类的细节暴露给子类,属于白盒式代码复用,当父类的实现更改时,子类也需要更改,并且继承关系在编译期间静态决定了层次结构,从父类继承来的实现在运行期不能改变。

组合的优点:容器类仅能通过被包含对象的接口来对其进行访问,属于黑盒式代码复用,封装性能好,实现上相互依赖小,通过获取指向其它的具有相同类型的对象的引用,可以在运行期动态的定义对象的组合。缺点:导致系统中对象过多,为了能将多个不同的对象作为组合块来使用,必须仔细地对接口进行定义。整体类不能自动获得局部类的接口,需要更多的代码进行封装,定义接口。

2.stl中map和hashmap的区别,hashmap是否总是优于map

答案:map是将key值和value进行映射的一种数据结果,key值按照红黑二叉树进行分布,红黑树对数据自动排序,是一种严格的平衡二叉树。插入和查找一个元素的时间复杂度是一样的,都是O(log2n),一个key值只能对应一个value,hashmap使用哈希表实现的,用空间换时间,查找和插入速度与哈希函数和冲突处理函数有关,是一个常量。hashmap不一定总是优于map,当数据量比较大,不限制内存时用hashmap较好,速度还与哈希函数和冲突处理函数的选取有关,数据量较小适合map。

3.引用和指针的区别

概念:

指针指向一块内存,指针保存的是内存的地址;引用是变量的别名,本质是引用该变量的地址

解引用是取指针指向的地址的内容,取地址是获得变量在内存中的地址。

区别:

(1)引用使用是无需解引用,指针需解引用。

(2)引用不能为空,指针可以为空。

(3)引用在定义时被初始化一次,之后不可变;指针指向的值和本身的值是可变的,也就是说指针只是一块地址,地址里的东西可变。

(4)程序会给指针变量分配内存区域,而引用不需要分配内存区域。

4.get和post的区别

答案:

5.函数指针

答案:指向函数的指针变量,包含了函数的入口地址,可以通过它来调用函数。

6.linux内核中的Timer定时器机制

7.C++构造函数的调用和代码扩展,类成员初始化为什么按声明顺序初始化?

答案:一个类可以有多个构造函数,但是只有一个析构函数。在不同的构造函数中,类成员的初始化顺序可以不同,但是析构函数的析构顺序必须与初始化顺序相反,这无疑是矛盾的。因此为了简单,不论构造函数中类成员的初始化顺序如何,实现时统一按照类成员声明的先后顺序类初始化,这样,在析构时就能确保析构的顺序和初始化的顺序相反。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值