c++ primer -- 基于过程的设计(2)
来源:互联网 发布:甲骨文软件系统公司 编辑:程序博客网 时间:2024/06/07 11:06
1.如果返回值是一个大型类对象,用引用(或指针)返回类型比按值返回类对象效率要高得多。在某些情况下,编译器自动将按值返回转换到按引用返回。该优化被称为命名返回值优化(named return value optimization)。
2.返回一个指向局部对象的引用。局部对象的生命周期随函数的结束而结束。在该函数结束后,该引用变成未定义内存的别名。
3.函数返回一个左值。对返回值的任何修改都将改变被返回的实际对象。为防止对引用返回值的无意修改,返回值应该被声明为const。
4.一个程序中的各种函数可以通过两种机制进行通信。[这里的通信(communication)指的是值的交换。]一种方法是使用全局对象,另一种方法是使用函数参数表和返回值。
5.依靠全局对象的通信有下列缺点:A)使用全局对象的函数依赖于全局对象的存在和类型,这使得在不同的上下文环境中重用该函数更加困难。B)如果程序必须被修改,则全局依赖增加了引入错误的可能性。而且,即使只对局部做修改也要求程序员必须理解整个程序。C)如果全局对象得到一个不正确的值,则必须查找整个程序以判断错误发生的位置,也就是没有实现局部化。D)当一个函数使用全局对象时,递归更加难以正确完成。E)在线程存在的情况下,我们必须做特殊的编码,以便同步各个线程对于全局对象的读和写操作。
6.向一个函数传递参数发生错误的可能性随参数表的长度的增加而提高。作为一个通用规则。8个参数应该是最大值了。为了替换一个大型的参数表,程序员可以将参数声明为类、数组或某一种容器类型。这样的参数可以用来包含一组参数值。
7.一个函数只能返回一个值。如果程序的逻辑要求返回多个值,那么程序员可以将某些函数参数声明为引用。或者,程序员可以声明一个函数,它的返回类型是一个可以包含一组返回值的类或某一种容器类型。
8.查看编译器的用户指南,以获得其他链接指示符的进一步信息。
2.返回一个指向局部对象的引用。局部对象的生命周期随函数的结束而结束。在该函数结束后,该引用变成未定义内存的别名。
3.函数返回一个左值。对返回值的任何修改都将改变被返回的实际对象。为防止对引用返回值的无意修改,返回值应该被声明为const。
4.一个程序中的各种函数可以通过两种机制进行通信。[这里的通信(communication)指的是值的交换。]一种方法是使用全局对象,另一种方法是使用函数参数表和返回值。
5.依靠全局对象的通信有下列缺点:A)使用全局对象的函数依赖于全局对象的存在和类型,这使得在不同的上下文环境中重用该函数更加困难。B)如果程序必须被修改,则全局依赖增加了引入错误的可能性。而且,即使只对局部做修改也要求程序员必须理解整个程序。C)如果全局对象得到一个不正确的值,则必须查找整个程序以判断错误发生的位置,也就是没有实现局部化。D)当一个函数使用全局对象时,递归更加难以正确完成。E)在线程存在的情况下,我们必须做特殊的编码,以便同步各个线程对于全局对象的读和写操作。
6.向一个函数传递参数发生错误的可能性随参数表的长度的增加而提高。作为一个通用规则。8个参数应该是最大值了。为了替换一个大型的参数表,程序员可以将参数声明为类、数组或某一种容器类型。这样的参数可以用来包含一组参数值。
7.一个函数只能返回一个值。如果程序的逻辑要求返回多个值,那么程序员可以将某些函数参数声明为引用。或者,程序员可以声明一个函数,它的返回类型是一个可以包含一组返回值的类或某一种容器类型。
8.查看编译器的用户指南,以获得其他链接指示符的进一步信息。
- c++ primer -- 基于过程的设计(2)
- c++ primer -- 基于过程的设计(3)
- c++ primer -- 基于过程的设计(4)
- c++ primer -- 基于过程的设计(5)
- c++ primer -- 基于过程的程序设计(1)
- C++ Primer 第三篇 基于过程的程序设计
- C++ Primer (3RD) 重读笔记——基于过程的程序设计
- 基于C#.Net 的MDI框架设计
- 基于unity3d(C#)的有限状态机设计
- 基于unity3d(C#)的有限状态机设计(二)
- 基于unity3d(C#)的有限状态机设计
- 基于unity3d(C#)的有限状态机设计
- 基于unity3d(C#)的有限状态机设计
- 我的C++primer 学习(2)
- LVrrp的设计过程-基于链路的vrrp
- 《C++ Primer》 对象、数组、基于对象设计、泛型设计
- C primer Plus2-2
- C Primer Plus3-2
- 线程间之共享内存空间和线程局部存储
- 表单重复提交
- c++ primer -- 基本语言(6)
- c++ primer -- 基本语言(7)
- c++ primer -- 基于过程的程序设计(1)
- c++ primer -- 基于过程的设计(2)
- #define用法小结
- 面向对象重要设计原则
- 黑马程序员—我自己编写的手机号码导入
- 纠结了这么久,boss终于让我写java代码了
- poj3041题解
- c++ primer -- 基于过程的设计(3)
- android-BroadcastReceiver 发送一条普通广播
- JNDI