《程序员面试宝典》学习笔记-1

来源:互联网 发布:c语言后缀表达式求值 编辑:程序博客网 时间:2024/06/05 02:52
拷贝构造函数赋值方法:
1.BB b2=b1;
2.BB b2(b1);
需要调用拷贝构造函数的三种情况:
1.一个对象作为函数参数,以值传递的方式传入函数体;
2.一个对象作为函数返回值,以值传递的方式从函数返回;
3.一个对象用于给另外一个对象进行初始化(赋值初始化);
注意使用stl模板,给容器增加元素时,有无拷贝构造函数,若无则为浅拷贝;


赋值函数:
缺省赋值函数位拷贝三个错误:a赋给b:
1.b.m_data=a.m_data 原有b.m_data内存没释放,内存泄露;
2.b.m_data和a.m_data 指向同一块内存,一方变动影响另一方;
3.对象析构时,m_data被释放了两次;


realloc函数的使用:
buf=malloc(sizeof(t)*s);
buf=realloc(buf,sizeof(t)*s);


面向对象的设计的三原则:封装,继承,多态。
封装:
1.广为人知的是把数据和针对该数据的操作,统一到一个class里;
2.通过文件,比如C和C++支持对头文件的包含(#include),因此,可以把一些相关的常量定义,类型定义,函数声明,统统封装到某个头文件中。
3.通过namespace/package/module
  C++的namespace、JAVA的package、python的module,这些语法虽然称呼各不相同,但具有相同的本质。因此,也可以利用这些语法来进行封装。
封装的好处:增加软件代码的内聚性,通过增加内聚性,进而提高可复用性和可维护性。此外还可以“信息隐藏”:把不该暴露的信息藏起来。如private、
protected之类的关键字。这些关键字可以通过访问控制,来达到信息隐藏的目的。  
0 0
原创粉丝点击