《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 operatorcall 操作符
character字符
child class子类
class
class template类模板
client客户(端)
code代码
compatible兼容
compiler time编译期
compiler编译器
component组件
composition复合
concrete具象的
concurrent并发
configuration配置
connection连接
constraint约束(条件)
construct构件
container容器
constC++ 关键字,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预处理器
print打印
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虚拟机
二、术语  2.1 声明式(declaration)

声明式是告诉编译器变量或者函数的名称和类型,但略去细节。

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 内,抑或是两者兼具,取决于哪个头文件被包含。
2.2 定义式(definition)

定义式的任务是提供编译器一些声明式所略去的细节。对对象而言,定义式是编译器为此对象分配内存的地点。

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 更受欢迎,因为它们禁止编译器执行非预期(往往也不被期望)的类型转换。
2.4 构造函数

构造函数被用来以同型对象初始化自我对象,拷贝赋值操作符被用来从另一个同型对象中拷贝其值到自我对象。

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))
    ;
  • 注意 = 可以调用拷贝赋值操作符,也可以调用拷贝构造函数,需要进行区别。
  • 拷贝构造函数是一个尤其重要的函数,因为它定义一个对象通过以值传递。
2.5 STL 标准模板库

STL 是 C++ 标准程序库的一部分,致力于容器(如 vector、list、set、map 等等)、迭代器(如 vector::iterator, set::iterator 等等)、 算法(如 for_each、find、sort 等等)及相关功能。许多相关功能以函数对象(function objects)实现,那是行为像函数的对象。这样的对象来自于重载 operator()(function call 操作符)的类。我们不能对STL陌生。

  • 特别强调,使用了不明确(未定义)行为的结果是不可预期的,程序会出现错误行为,有时执行正常,有时造成崩坏,有时更产出不正确的结果。
  • 开发时要尽可能避开不明确行为。
2.6 接口

对其他语言转换至 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