设为首页 加入收藏

TOP

C++ prime/笔试总结五
2017-05-27 17:35:23 】 浏览:4190
Tags:prime/ 笔试 总结

C++ prime/笔试总结五。41.(1)通常,模板算法/通用算法是针对迭代器操作,不会改变迭代器所指向的底层容;

(2)对于 list 和 forword_list (基于链表)优先使用成员函数的算法,而非通用算法.

42.对于元素为 结构体/类类型 的容器的遍历:

class Point
{
   int x;
   int y;
 public:
   void display()
   {
      cout<
  

43.区分map和set的key_type, value_type等

set
   
    ::value_type v1;
set
    
     ::key_type v2; //v1,v2都是string map
     
      ::value_type v3; //v3是pair
      
        map
       
        ::key_type v4; //v4是string map
        
         ::mapped_type v5; //v5是int
        
       
      
     
    
   

注意 v3 和 v5 !!!

PS: value_type 对实现 traits编程技法 是很重要的.

44.(1)每个类/结构体只能有一个析构函数,不能重载;
      (2)对于要实现多态的基类的析构函数要声明为virtual;

45.(1)释放一块非new/malloc分配的内存,或者将相同的指针值释放(delete/free())多次,将产生未定义行为;
      (2)动态对象的生存周期直到被释放为止
(3)区分malloc()/free() 和 new/delete
本质区别:malloc()/free()是库函数,而new/delete是C++运算符;
对于用户定义的对象而言,用malloc/free无法满足动态管理对象的要求:
对象在创建时同时要自动执行构造函数,在消亡时要自动执行析构函数;由于mallco/free不是运算符,不再编译器控制权限之内,不能把构造/析构的任务强制加于它们.

其他:
1.malloc需要手工计算字节数,而new可以自动计算需要分配的内存空间;
2.malloc不安去,而new是安全的;(指在分配时)
3.new operator 由两部分组成: operator new 和 construct
operator new相当于malloc 但是operator new可以重载,可以自定义内存分配策略,甚至不做内存分配,甚至分配到非内存设备上;malloc不能.

PS:C作为C++的一部分,其实也应该熟练掌握,在<<深入理解C指针>>中,讲了很多内存分配的问题,实际上,想成为一名合格的底层程序猿,必须会!

比如:
(4)区分 指针数组 int* arr[5]; //是一个数组,数组的元素都是指向int的指针
 和 数组指针int (*p)[5]; //是一个指针,指向int数组
//本质是数组还是指针,看运算符的优先级
(5)函数指针 int (*fun)(int,int);
(6)void* 的妙用等

46.free()/delete只释放指针指向的内存,而指针本身仍存在,(指向了未定义的地方),所以要手动把指针指向NULL.(当然C++提供智能指针)
理解:”指向未定义的地方”,实际上还是指向老地方/原来的地址(你可以自己去实践),只是该地址的内容不确定了...
47.C不支持函数重载,2333

48.struct和class唯一的区别就是默认的访问控制符:struct为public, class为private;
也就是说struct 声明为private,protected也是可以的

49.区分 访问权限 和 继承方式
三种访问权限
public:可以被任意实体访问
protected:只允许子类及本类的成员函数访问
private:只允许本类的成员函数访问

三种继承方式
public 继承,protect 继承,private 继承

组合结果
基类中 继承方式 子类中
public & public继承 => public
public & protected继承 => protected
public & private继承 = > private

protected & public继承 => protected
protected & protected继承 => protected
protected & private继承 = > private

private & public继承 => 子类无权访问
private & protected继承 => 子类无权访问
private & private继承 = > 子类无权访问

由以上组合结果可以看出
1、public继承不改变基类成员的访问权限
2、private继承使得基类所有成员在子类中的访问权限变为private
3、protected继承将基类中public成员变为子类的protected成员,其它成员的访问 权限不变。
4、基类中的private成员不受继承方式的影响,子类永远无权访问。

50.23种设计模式:
(1)5种创建型模式:
1.工厂方法; 2.抽象工厂; 3.单例; 4.建造者; 5.原型;

(2)11种行为模式/关系模式:
1.策略; 2.模板方法; 3.观察者; 4.迭代子模式; 5.责任链; 6.命令; 7.备忘录; 8.状态; 9.访问者; 10.中介者; 11.解释器;

(3)7种结构型模式:
1.适配器; 2.装饰器; 3.代理; 4.外观; 5.桥接; 6.组合; 7.享元;

设计模式
总原则:开闭原则(对扩展开放,对修改关闭)
六大原则:1.单一职责; 2.里氏替换; 3.依赖倒置; 4.接口隔离; 5.迪米特; 6.合成复用.(多使用合成复用,少用继承)
//ps:具体的我自己都没弄清,复杂的软件工程,不怎么用就不会,然而笔试考到了,哎…

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++ prime/笔试总结四 下一篇C++之操作符重载及实现简单的复数..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目