详情介绍
C++工程实践经验谈
内容一览
1 慎用匿名namespace . 2
2 不要重载全局 ::operator new() 6
3 采用有利于版本管理的代码格式 . 13
4 二进制兼容性 . . 23
5 避免使用虚函数作为库的接口 . . 28
6 动态库的接口的推荐做法 . . 36
7 以 boost::function和boost:bind 取代虚函数 . . 40
8 带符号整数的除法与余数 . . 47
9 用异或来交换变量是错误的 55
10 在单元测试中 mock 系统调用 . . 62
11 iostream 的用途与局限 67
12 值语义与数据抽象 96
13 再探 std::string . 114
14 用 STL algorithm 秒杀几道算法面试题 122
1 慎用匿名namespace
匿名namespace (anonymous namespace或称unnamed namespace)是C++语
言的一项非常有用的功能,其主要目的是让该 namespace 中的成员(变量或函
数)具有独一无二的全局名称,避免名字碰撞 (name collisions)。一般在编写 .cpp
文件时,如果需要写一些小的 helper 函数,我们常常会放到匿名 namespace 里。
muduo 0.1.7 中的 muduo/base/Date.cc 和 muduo/base/Thread.cc 等处就用到了匿名
namespace。
我最近在工作中遇到并重新思考了这一问题,发现匿名 namespace 并不是多多益善。
1.1 C 语言的static 关键字的两种用法
C 语言的 static关键字有两种用途:
1. 用于函数内部修饰变量,即函数内的静态变量。这种变量的生存期长于该函数,
使得函数具有一定的“状态”。使用静态变量的函数一般是不可重入的,也不是
线程安全的,比如strtok(3)。
2. 用在文件级别(函数体之外),修饰变量或函数,表示该变量或函数只在本文件
可见,其他文件看不到也访问不到该变量或函数。专业的说法叫“具有internal
linkage”(简言之:不暴露给别的translation unit)。
C 语言的这两种用法很明确,一般也不容易混淆。
内容一览
1 慎用匿名namespace . 2
2 不要重载全局 ::operator new() 6
3 采用有利于版本管理的代码格式 . 13
4 二进制兼容性 . . 23
5 避免使用虚函数作为库的接口 . . 28
6 动态库的接口的推荐做法 . . 36
7 以 boost::function和boost:bind 取代虚函数 . . 40
8 带符号整数的除法与余数 . . 47
9 用异或来交换变量是错误的 55
10 在单元测试中 mock 系统调用 . . 62
11 iostream 的用途与局限 67
12 值语义与数据抽象 96
13 再探 std::string . 114
14 用 STL algorithm 秒杀几道算法面试题 122
1 慎用匿名namespace
匿名namespace (anonymous namespace或称unnamed namespace)是C++语
言的一项非常有用的功能,其主要目的是让该 namespace 中的成员(变量或函
数)具有独一无二的全局名称,避免名字碰撞 (name collisions)。一般在编写 .cpp
文件时,如果需要写一些小的 helper 函数,我们常常会放到匿名 namespace 里。
muduo 0.1.7 中的 muduo/base/Date.cc 和 muduo/base/Thread.cc 等处就用到了匿名
namespace。
我最近在工作中遇到并重新思考了这一问题,发现匿名 namespace 并不是多多益善。
1.1 C 语言的static 关键字的两种用法
C 语言的 static关键字有两种用途:
1. 用于函数内部修饰变量,即函数内的静态变量。这种变量的生存期长于该函数,
使得函数具有一定的“状态”。使用静态变量的函数一般是不可重入的,也不是
线程安全的,比如strtok(3)。
2. 用在文件级别(函数体之外),修饰变量或函数,表示该变量或函数只在本文件
可见,其他文件看不到也访问不到该变量或函数。专业的说法叫“具有internal
linkage”(简言之:不暴露给别的translation unit)。
C 语言的这两种用法很明确,一般也不容易混淆。
下载地址
下载错误?【投诉报错】
人气书籍
![Objective-C基础教程 中文 PDF 清晰版 [31M] Objective-C基础教程 中文 PDF 清晰版 [31M]](//img.jbzj.com/do/uploads/litimg/120917/153R51Ba5.jpg)
Objective-C基础教程 中文 PDF 清晰版 [31M]
C程序设计(第四版)+学习辅导 pdf版打包 谭浩强主编
C++ Primer Plus (第五版) 中文PDF清晰扫描版(57M)![Linux C编程实战 中文 PDF版 [65.2M] Linux C编程实战 中文 PDF版 [65.2M]](//img.jbzj.com/do/uploads/litimg/120907/153554161205.jpg)
Linux C编程实战 中文 PDF版 [65.2M]![数据结构(C语言版) 第2版 (严蔚敏等) 高清pdf完整版[38MB] 数据结构(C语言版) 第2版 (严蔚敏等) 高清pdf完整版[38MB]](//img.jbzj.com/do/uploads/litimg/190828/1J3302J0H.jpg)
数据结构(C语言版) 第2版 (严蔚敏等) 高清pdf完整版[38MB]
数据结构基础(C语言版)(第2版)中文 PDF清晰版(35.4M)
Lua程序设计 Programming in Lua 中文 PDF 高清版
数据结构C语言版(严蔚敏) 高清版 PDF格式
C语言经典编程282例 (明日科技) 高清PDF扫描版 161M
C++ GUI Qt 4编程(第二版) PDF扫描版
下载声明
☉ 解压密码:www.jb51.net 就是本站主域名,希望大家看清楚,[ 分享码的获取方法 ]可以参考这篇文章
☉ 推荐使用 [ 迅雷 ] 下载,使用 [ WinRAR v5 ] 以上版本解压本站软件。
☉ 如果这个软件总是不能下载的请在评论中留言,我们会尽快修复,谢谢!
☉ 下载本站资源,如果服务器暂不能下载请过一段时间重试!或者多试试几个下载地址
☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持!
☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。
☉ 本站提供的C++工程实践经验谈 以工程实例来谈C++ 中文 PDF清晰版资源来源互联网,版权归该下载资源的合法拥有者所有。













![Objective-C基础教程 中文 PDF 清晰版 [31M] Objective-C基础教程 中文 PDF 清晰版 [31M]](http://img.jbzj.com/do/uploads/litimg/120917/153R51Ba5.jpg)


![Linux C编程实战 中文 PDF版 [65.2M] Linux C编程实战 中文 PDF版 [65.2M]](http://img.jbzj.com/do/uploads/litimg/120907/153554161205.jpg)
![数据结构(C语言版) 第2版 (严蔚敏等) 高清pdf完整版[38MB] 数据结构(C语言版) 第2版 (严蔚敏等) 高清pdf完整版[38MB]](http://img.jbzj.com/do/uploads/litimg/190828/1J3302J0H.jpg)




