《EffectiveC++》系列之导读部分-创新互联
知道这本书已经好久了,但是一直没有去认真拜读,在实践中发现自己还是需要多提升提升编码的规范和格局,这样才能制造出更好的代码。本书一共列出了45个具体的细节来修复代码中的不足。为了搞懂本书,我们先从导读说起。
创新互联建站服务项目包括突泉网站建设、突泉网站制作、突泉网页制作以及突泉网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,突泉网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到突泉省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!目录
一、书中中英文对照
二、术语
2.1 声明式(declaration)
2.2 定义式(definition)
2.3 初始化
2.4 构造函数
2.5 STL 标准模板库
2.6 接口
2.7 关于线程
2.8 TR1 和 Boost
三、总结
一、书中中英文对照
本书中有许多编程的英文术语,我给他贴出来放到下面:
英文术语 | 描述 |
---|---|
abstract | 抽象的 |
abstraction | 抽象性 |
access | 访问 |
access level | 访问级别 |
access function | 访问函数 |
adapter | 适配器 |
address | 地址 |
address-of operator | 取地址操作符 |
aggregation | 聚合 |
algorithm | 算法 |
allocate | 分配 |
allocator | 分配器 |
application | 应用程序 |
architecture | 体系结构 |
argument | 实参 |
array | 数组 |
arrow operator | 箭头操作符 |
assembly language | 汇编语言 |
assert(-ion) | 断言 |
assign(-ment) | 赋值 |
assignment operator | 赋值操作符 |
base class | 基类 |
base type | 基类型 |
binary search | 二分查找 |
binary tree | 二叉树 |
binary operator | 二元操作符 |
binding | 绑定 |
bit | 位 |
bitwise | 以 bit 为单元逐一...... |
block | 区块 |
boolean | 布尔值 |
breakpoint | 断点 |
build | 构建 |
build-in | 内置 |
bus | 总线 |
byte | 字节 |
cache | 高速缓存(区) |
call | 调用 |
callback | 回调 |
call operator | call 操作符 |
character | 字符 |
child class | 子类 |
class | 类 |
class template | 类模板 |
client | 客户(端) |
code | 代码 |
compatible | 兼容 |
compiler time | 编译期 |
compiler | 编译器 |
component | 组件 |
composition | 复合 |
concrete | 具象的 |
concurrent | 并发 |
configuration | 配置 |
connection | 连接 |
constraint | 约束(条件) |
construct | 构件 |
container | 容器 |
const | C++ 关键字,constant 的缩写 |
constant | 常量 |
constructor | 构造函数 |
copy | 拷贝(动词/名词),副本(名词) |
create | 创建 |
custom | 定制 |
data | 数据 |
database | 数据库 |
data member | 数据成员(变量) |
data structure | 数据结构 |
debug | 调试 |
debugger | 调试器 |
declaration | 声明式 |
default | 缺省(默认) |
definition | 定义式 |
delegate | 委托 |
dereference | 提领(解参考) |
derived class | 派生类 |
design pattern | 设计模式 |
destroy | 销毁 |
destructor | 析构函数 |
directive | 指示符 |
document | 文档 |
dynamic binding | 动态绑定 |
entity | 物体 |
encapsulation | 封装 |
enum(-eration) | 枚举 |
equality | 相等 |
equivalence | 等价 |
evaluate | 核定、核算 |
exception | 异常 |
explicit | 显式 |
expression | 表达式 |
file | 文件 |
framework | 框架 |
full specialization | 全特化 |
function | 函数 |
function object | 函数对象 |
function template | 函数模板 |
generic | 泛型、泛化、一般化 |
getter | 取值函数 |
global | 全局的 |
handle | 句柄 |
handler | 处理函数 |
hash table | 哈希表、散列表 |
header(file) | 头文件 |
heap | 堆 |
hierarchy | 继承体系 |
identifier | 标识符 |
implement(-ation) | 实现 |
implicit | 隐喻的、暗自的、隐式 |
information | 信息 |
inheritance | 继承 |
inline | 内联 |
initialization list | 初始化列表 |
initialize | 初始化 |
instance | 实体 |
instantiate | 实体化 |
interface | 接口 |
Internet | 互联网 |
interpreter | 解释器 |
invariants | 恒常性 |
invoke | 调用 |
iterator | 迭代器 |
library | 程序库 |
linker | 连接器 |
literal | 字面常量 |
list | 链表 |
load | 装载 |
local | 局部的 |
lock | 机锁 |
loop | 循环 |
lvalue | 左值 |
macro | 宏 |
member | 成员 |
member function | 成员函数 |
memory | 内存 |
memory leak | 内存泄漏 |
meta | 元 |
meta-programming | 元编程 |
modeling | 塑膜 |
module | 模块 |
modifier | 修饰符 |
multi-tasking | 多任务 |
namespace | 命名空间 |
native | 固有的 |
nested | 嵌套的 |
object | 对象 |
object based | 基于对象的 |
object model | 对象模型 |
object oriented | 面对对象 |
operand | 操作数 |
operating system | 操作系统 |
operator | 操作符 |
overflow | 溢出 |
overhead | 额外开销 |
overload | 重载 |
override | 覆写 |
package | 包 |
parallel | 并行 |
parameter | 参数、形参 |
parent class | 父类 |
parse | 解析 |
partial specialization | 偏特化 |
pass by reference | 按址传递 |
pass by value | 按值传递 |
pattern | 模式 |
placement delete | (某种特殊形式的 delete operatoe) |
placement new | (某种特殊形式的 new operatoe) |
pointer | 指针 |
polymorphism | 多态 |
preprocessor | 预处理器 |
打印 | |
printer | 打印机 |
process | 进程 |
program | 程序 |
programer | 程序员 |
programming | 编程 |
project | 项目 |
pseudo code | 伪代码 |
quality | 质量 |
queue | 队列 |
raw | 原始的、未经处理的 |
recursive | 递归 |
refer to | 指向、指称 |
reference | 引用 |
regular expression | 正则表达式 |
resolve | 解析 |
return | 返回 |
return type | 返回类型 |
return value | 返回值 |
runtime | 运行期 |
rvalue | 右值 |
save | 保存 |
schedule | 调度 |
scheduler | 调度器 |
scope | 作用域 |
search | 查找 |
semantics | 语义 |
setter | 设值函数 |
signature | 签名 |
smart pointer | 智能指针 |
specialization | 特化 |
source | 源码 |
stack | 栈 |
standard library | 标准程序库 |
statement | 语句 |
static | 静态的 |
string | 字符串 |
subtype | 子类型 |
support | 支持 |
template | 模板 |
temporary object | 临时对象 |
text | 文本 |
thread | 线程 |
thread safe | 多线程安全 |
throw | 抛出 |
token | 语汇单元 |
type | 类型 |
unary function | 单参函数 |
underflow | 下溢 |
unqualified | 未经资格修饰 |
user | 用户 |
user interface | 用户界面 |
value | 值 |
variable | 变量 |
vector | 矢量 |
virtual function | 虚拟函数 |
virtual machine | 虚拟机 |
声明式是告诉编译器变量或者函数的名称和类型,但略去细节。
extern int x; // 对象声明式
std::size_t numDigits(int number); // 函数声明式
class Widget; // class declaration // 类声明式
template// 模板声明式
class GraphNode; // typename 的使用
- 返回类型是
std::size_t
表示类型 size_t 位于命名空间 std 内。这个命名空间是几乎所有 C++ 标准程序库元素的存放处。 - C 标准程序库也适用于 C++,而继承自 C 的符号有可能存在于全局作用域或 std 内,抑或是两者兼具,取决于哪个头文件被包含。
定义式的任务是提供编译器一些声明式所略去的细节。对对象而言,定义式是编译器为此对象分配内存的地点。
int x; // 定义对象
std::size_t numDigits(int number) // 定义函数
{ // 此函数返回其参数的数字个数
std::size_t digitsSoFar = 1; // 例如十位数返回 2,百位数返回 3
while ((number /= 10) != 0)
++digitsSoFar;
return digitsSoFar;
}
class Widget
{ // 定义类
public:
Widget();
~Widget();
// ...
};
template// 定义模板
class GraphNode
{
public:
GraphNode();
~GraphNode();
// ...
};
2.3 初始化初始化是给予对象初值的过程。对用户自定义类型的对象而言,初始化由构造函数执行。默认构造函数是一个可被调用而不带任何实参者。这样的构造函数要不没有参数,要不就是每个参数都有缺省值。
class A
{
public:
A(); // 默认构造函数
};
class B
{
public:
explicit B(int x = 0, bool b = true); // 默认构造函数
};
class C
{
public:
explicit C(int x); // 不是默认构造函数
};
void doSomething(B bObject); //函数,接受一个类型为 B 的对象作为参数
B bObj1; // 类型为 B 的对象
doSomething(bObj1); // 正确,传递一个类型为 B 的对象给 doSomething 函数
B bObj2(28); // 正确,定义 B 类型的类型并赋初始值为 28
// (函数的 bool 参数缺省为 true)
doSomething(28); // 错误! doSomething 函数应接受一个 B 类型的参数,而不是 int 类型
// 并且没有 int 至 B 之间隐式转换
doSomething(B(28)); // 正确,使用 B 构造函数及那个 int 类型显式转换(也就是转型)为一个 B 类型以满足此调用
- explicit 可阻止它们被用来执行隐式类型转换,但它们仍可被用来进行显式类型转换。
- explicit 的构造函数通常比 implicit 更受欢迎,因为它们禁止编译器执行非预期(往往也不被期望)的类型转换。
构造函数被用来以同型对象初始化自我对象,拷贝赋值操作符被用来从另一个同型对象中拷贝其值到自我对象。
class Widget
{
public:
Widget(); // 默认构造函数
Widget(const Widget& rhs); // 拷贝构造函数
Widget& operator=(const Widget& rhs); // 拷贝赋值操作符
// ...
};
Widget w1; // 调用默认构造函数
Widget w2(w1); // 调用拷贝构造函数
w1 = w2; // 调用拷贝赋值操作符
Widget w3 = w2; // 调用拷贝构造函数
bool hasAcceptableQuality(Widget w);
Widget aWidget;
if (hasAcceptableQuality(aWidget))
;
- 注意 = 可以调用拷贝赋值操作符,也可以调用拷贝构造函数,需要进行区别。
- 拷贝构造函数是一个尤其重要的函数,因为它定义一个对象通过以值传递。
STL 是 C++ 标准程序库的一部分,致力于容器(如 vector、list、set、map 等等)、迭代器(如 vector
- 特别强调,使用了不明确(未定义)行为的结果是不可预期的,程序会出现错误行为,有时执行正常,有时造成崩坏,有时更产出不正确的结果。
- 开发时要尽可能避开不明确行为。
对其他语言转换至 C++ 阵营的程序员而言,另一个可能造成困惑的术语是接口。Java 和 .NET 语言都提供接口为语言元素, 但 C++ 没有,本书中使用术语 “接口” 时,一般谈的是函数的签名(signature)或类的可访问元素(例如我可能会说类的 “公共接口” 或 “保护接口 ” 或 “私有接口”),或是针对某模板类型参数需为有效的一个表达式。也就是说的接口完全是指一般性的设计观念。
2.7 关于线程作为一个语言,C++ 对线程没有任何意念,事实上它对任何并发事物都没有意念。C++ 标准程序库也一样。当 C++ 受到全世界关注时多线程程序还不存在。
但是本书作者会说出哪块可能会存多线程安全问题。敬请关注后续内容。
2.8 TR1 和 Boost三、总结TR1(Technical Report 1 简称 TR1)是一份规范,描述加入 C++ 标准程序库的诸多新功能。这些功能以新的类模板和函数模板形式体现,针对的题目有哈希表,引用计数智能指针,正则表达式以及更多。 所有 TR1 组件都被置于命名空间 tr1 内,后者又嵌套于命名空间 std 内。
Boost 是个组织,亦是一个网站,提供可移植、同行复审、源码开放的 C++ 程序库。大多数 TR1 机能是以 Boost 的工作为基础。在编译器厂商于其 C++ 程序库中含入 TR1 之前,对那些搜寻 TR1 实现品的开发人员而言,Boost 网站可能是第一个逗留点。Boost 提供比 TR1 更多的东西,所以无论如何值得了解它。
以上均为本书的基础介绍,期待后续的改善程序的细节的更新吧。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网页标题:《EffectiveC++》系列之导读部分-创新互联
浏览路径:http://scyanting.com/article/dciseo.html