《程序员面试宝典》学习笔记-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之类的关键字。这些关键字可以通过访问控制,来达到信息隐藏的目的。
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
- 《程序员面试宝典》学习笔记-1
- 《程序员面试宝典》学习笔记(1)
- 程序员面试宝典-学习1
- 程序员面试宝典笔记
- 程序员面试宝典笔记
- 程序员面试宝典笔记1--基础知识
- 《程序员面试宝典》一些笔记(1)
- 《程序员面试宝典第四版》笔记1
- 《程序员面试宝典》学习记录1
- 程序员面试宝典-1
- 程序员面试宝典1
- 【求职】程序员面试宝典--笔记
- <<Java程序员面试宝典>>笔记
- 程序员面试宝典知识点笔记
- java程序员面试宝典笔记
- 程序员面试宝典_笔记
- 2012年8月22学习笔记---程序员面试宝典
- 《Java程序员面试宝典》学习笔记(基本语法部分)
- 宽字符处理函数函数与普通函数对照表
- python获取文件及文件夹大小
- Jenkins+Gradle实现android开发持续集成、打包
- 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的
- Xcode配置Appledoc并生成项目文档
- 《程序员面试宝典》学习笔记-1
- hadoop多文件格式输入
- Lingo2
- ubuntu 12.04编译及调试linux-0.11
- 4Sum
- Lingo教程3
- WPA/RSN四次握手和PTK
- POJ:1006--BIORHYTHM(生理周期计算)
- Scala学习问题积累(持续)