Effective C++ 之 Item 1: 视C++为一个语言联邦
Effective C++
Chapter 1. 让自己习惯C++(Accustoming Yourself to C++)
Item 1. 视C++为一个语言联邦(View C++ as a federation of languages)
将 C++ 视为由四个次语言组成的语言联邦,在某个次语言中,各种守则与通例都倾向于简单、直观易懂、且容易记住。但从一个次语言移往另一个次语言,守则可能改变。
- C —— C++ 以 C 为基础。区块(blocks)、语句(statements)、预处理器(preprocessor)、内置数据类型(built-in data types)、数组(arrays)、指针(pointers)等统统来自 C 。
- Object-Oriented C++ —— 这部分是 C with Classes 所诉求的: classes(包括构造函数和析构函数)、封装(encapsulation)、继承(inheritance)、多态(polymorphism)、virtual 函数(动态绑定)……等等。
- Template C++ —— 这是 C++ 的泛型编程(generic programming)部分。
- STL —— STL 是个 template 程序库,对容器(containers)、迭代器(iterators)、算法(algorithms)以及函数对象(function objects)的规约有极佳的紧密配合与协调。
不同的次语言有不同的守则,因而采用不用的策略。如对内置(也就是 C-like)类型而言 pass-by-value 通常比 pass-by-reference 高效,但对于 Object-Oriented C++ ,由于用户自定义构造函数和析构函数的存在,pass-by-reference-to-const 往往更好。运用 Template C++ 时也是如此,因为此时你不知道所处理对象的类型。但一旦跨入 STL,因为迭代器和函数对象都是在 C 指针之上塑造出来的,所以对 STL 的迭代器和函数对象而言,旧式的 C pass-by-value 守则再次适用。
请记住:
- C++ 高效编程守则视状况而改变,取决于你使用 C++ 的哪一部分。
Effective C++ 之 Item 1: 视C++为一个语言联邦的更多相关文章
- Effective C++条款01: 视C++为一个语言联邦
一开始C++定义为:C with Classes. 如今的C++已经是一个多重范型编程语言,可以把C++视为有四个次语言组成的联邦语言. C.C++任然以C为基础.区块.语句.预处理.内置语言类型.数 ...
- Effective C++ 条款01:视C++为一个语言联邦
四个次语言 C Object-Oriented C++ Template C++ STL
- 读书笔记 effective c++ Item 1 将c++视为一个语言联邦
Item 1 将c++视为一个语言联邦 如今的c++已经是一个多重泛型变成语言.支持过程化,面向对象,函数式,泛型和元编程的组合.这种强大使得c++无可匹敌,却也带来了一些问题.所有“合适的”规则看上 ...
- Effective C++_笔记_条款01_视C++为一个语言联邦
(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) C++的各种能力和特性使它成为一个无可匹敌的工具,但也可能引发某 ...
- 【Effective c++ 读书笔记】条款01 视 C++ 为一个语言联邦
一开始,C++只是 C 加上一些面向对象的特性.C++最初的名称 C with Classes 也反映了这个血缘关系. 但是,现在,当这个语言逐渐成熟,它变得更活跃更无拘束,更大胆冒险,开始接受不同于 ...
- Effective C++之条款1:视C++为一个语言联邦
C++中的sub-languages有如下四种: C Object-Oriented C++: (classes ,encapsulation(封装),inheritance(继承),polymo ...
- NO.1: 视C++为一个语言联邦
C++由4个部分组成: 1.C part of C++; 2.Object-Oriented C++; 3.Template C++; 4.STL 请记住:C++的高效编程视状况而变化,取决你使用C+ ...
- EC笔记,第一部分:1.视C++为一个语言联邦
C++可看作由以下四种次语言组合而成1.C语言 高效,内置数据类型,数组,区块,语句,指针,预处理器,没有重载.异常.模板2.类 构造,析构,封装,继承,多态,迟绑定3.模板 模板元 ...
- 【01】视C++为一个语言联邦
1.C++是个多重范型编程语言:面向过程,面向对象,函数编程,泛型形式,元编程形式. 2.C++是一个语言联邦,包括四个次语言: a.C语言,C++以C语言为基础.但C语言有下列局限:没有模版,没有异 ...
随机推荐
- Remove Invalid Parentheses
Remove the minimum number of invalid parentheses in order to make the input string valid. Return all ...
- springMVC 访问404
问题:404 但是其他的controller可以访问!!!
- 用C#读取txt文件的方法
1.使用FileStream读写文件 文件头: using System;using System.Collections.Generic;using System.Text;using System ...
- XP共享连接数限制
- VC++ 获取当前模块的路径(dll/exe)
一般地,获取当前模块路径都是通过调用 GetModuleFileName() 来获取的. DWORD WINAPI GetModuleFileName( __in HMODULE hModule, _ ...
- WebService及WCF获取客户端IP,端口
wcf获取客户端IP,端口 var context = OperationContext.Current; var properties = context.IncomingMessageProper ...
- 关于call 和 apply
权威指南上的说法是:可以将call 和apply看做是某个对象的方法,通过调用方法的形式 间接调用函数:需要重点说明是 :通过call和apply 调用的 函数:具体用法--->如下: 1.先说 ...
- jq获取绝对定位与相对定位的top, left值
jquery 实现方法绝对var X = $('#ID').offset().top; var Y = $('#ID').offset().left; 相对var X = $('#ID').posit ...
- objective-c可变数组
1 #pragma mark ---------------可变数组----------------- 2 // 可以在数组里面进行增删改的操作 3 // 4 // ...
- EMS-Demo 雇员管理系统演示
做了一个小小的雇员管理系统,主要使用了JTable,然后比较得意的地方是实现了拼音搜索,感觉很高大上其实只要引入一个Jpinyin.jar就可以了(网上到处都有下载或者去我的git项目的lib中下载) ...