C++语言导学(7): 函数对象(Function Object)
函数对象(Function Object)
定义了operator()操作的对象就称为Function Object:
欢迎订阅公众号, 点击 MinYiLife
定义了operator()操作的对象就称为Function Object:
lambda表达式是一个可执行的代码单元,可以看作是一个匿名内联(inline)函数,下面以匿名函数代指lambda表达式。
定义语法:
匿名函数的函数体一般操作比较少,而且匿名函数一般不会反复在多处使用,常是一次性的。
如果一个类的主要目的是保存对象,那么通常称之为容器(container)。
这里主要简单概述一下这些标准库容器:
条款31: 将文件间的编译依存关系降到最低。 --- 《Effective C++》
条款22: 使用pImpl习惯用法时,将特殊成员函数的定义放到实现文件中。 --- 《Effective Modern C++》
pImpl
习惯用法,即pointer to implementation
,指的是以指针的方式访问类的实现部分。
C++提供开发者自定义类型的能力,而对于自定义类型的资源管理是一大难题。
对于一个自定义类型或者class来说,可以直接创建它的对象,也可以通过new为它创建指针。
对于对象和指针的资源管理,分别可以使用RAII原则和智能指针来处理。
程序组织的最佳方式是将程序看作依赖关系定义良好的一组模块,在逻辑上通过语言特性表达模块化,在物理上通过文件模块化实现高效的分别编译。
程序源码文件模块化最重要的一步是将每个组成部分的接口和实现分离开来,借助分别编译、后续链接的方式提高编译效率。
以往是通过头文件(*.hpp
)和实现文件(*.cpp
)来达到分离目的,在编译为动态链接库(*.so
)供其他人使用的时候特别方便,可以达到隐藏细节的目的。