《Effect C++》学习------条款1 视C++为一个语言联邦
来源:互联网 发布:谷歌全球域名 编辑:程序博客网 时间:2024/05/22 02:10
条款1 视C++为一个语言联邦
C++是一个多重泛型编程语言同时支持:面向过程形式、面向对象形式、函数形式、泛型形式、元编程形式。
为了理解C++,你必须认识主要的四个次语言:
- C。.区块(blocks),语句(statements),预处理器(proprocessor),内置数据类型(built-in data types),数组(arrays),指针(pointers)等统统来自C,许多C++对问题的解法其实不过是较高级的C解法。
- 面向对象的C++。这部分是“C with Classes”所诉求的:classes(包括构造函数和析构函数),封装(encapsulation),继承(inheritance),多态(polymorphism),虚函数(动态绑定)…等等,这一部分是面向对象在C++上的直接实施.。
- 泛型C++。这是C++的泛型编程(generic programming)部分,由于templates威力强大,它们带来崭新的变成范型(programming paradigm),也就是所谓的template meta-programmingTMP,模板元编程)。
- STL库。它包括容器(containers),迭代器(iterators),算法(algorithms)以及函数对象(function objects)。
当从某个次语言切换到另一个时,高效编程守则可能要改变策略,例如对于内置类型(C-like)而言pass-by-value比pass-by-reference要高效(pass-by-value更占内存,而pass-by-value经过了对指针的一层封装更占时间),但当从C part of C++迁往Obiect-Oriented C++时,由于用户自定义构造函数和析构函数的存在,pass-by-reference显然比pass-by-value效率更高,运用template时尤其如此,因为所处理对象的类型甚至不都不确定,然而一旦跨入STL,对于迭代器和函数对象而言,旧式的C pass-by-value守则再次适用(因为迭代器和函数对象都是在C指针之上塑造出来的)。
综上所述,C++由四个次语言组成,每个次语言都有自己的规约,使用不同的次语言时C++的高效编程守则也发生变化。
请记住:
- [x] 高效编程编程守则视状况而变化,取决于你使用C++的哪一个部分。
2 0
- 《Effect C++》学习------条款1 视C++为一个语言联邦
- [Effective C++] 条款01:视C++为一个语言联邦
- 《Effective C++》学习笔记条款01 视C++为一个语言联邦
- 菜鸟读《Effective C++》条款1:视C++为一个语言联邦
- 条款1 视c++为一个语言联邦(如何理解c++)
- effective C++(第三版)读书笔记一——条款一:视C++为一个语言联邦
- 条款1: 视C++为一个语言联邦
- 条款1:视C++为一个语言联邦。
- 条款1:视C++为一个语言联邦
- effective c++条款1:视C++为一个语言联邦
- 条款1:视C++为一个语言联邦
- 条款1:视C++为一个语言联邦。
- 条款1:视C++为一个语言联邦
- 条款1:视C++为一个语言联邦
- Effective c++ 学习笔记——之条款1:视C++为一个语言联邦
- 条款01:视C++为一个语言联邦
- 条款01:视C++为一个语言联邦
- 条款01:视c++为一个语言联邦
- 用数组实现邻接表
- Hibernate注解默认值
- jQuery效果--动画
- ffmpeg的tutorial中文版学习笔记(四)(新版函数额外补充)
- python中的字符串格式函数str.format()
- 《Effect C++》学习------条款1 视C++为一个语言联邦
- Altium Designer(Protel)网络连接方式Port和Net Label详解
- 原型模式(Prototype)
- 透彻理解指针
- java生成随机不重复id
- Java 注解指导手册 – 终极向导
- MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据
- JavaScript常用正则
- 深拷贝/浅拷贝