读书笔记_Effective C++_条款一:将C++视为一个语言联邦

C++起源于C,最初的名称为C with Classes,意为带类的C语言,然而,随着C++的不断发展和壮大,在很多功能上已经远远超越了C,甚至一些C++程序员反过来看C代码会觉得不习惯。

C++可以看成由四个部分组成,分别是:

(1) C。C++从语法和代码风格上以C为基础,这也正是C++命名的由来,是在C的基础上++。有意思的是,在《C++ Primer》这本书里有一个问题,问为什么C++叫“C++”而不叫“++C”呢?原因很简单,C++具有深厚的C的底蕴,++C也许得到的是D,象征着另一种语言,而C++返回的还是C,表明它是站在C这个巨人的肩膀之上的。

(2) 面向对象。面向对象编程是C++不同于C的显著部分,C++引入类和对象的概念,对事物提供了很好的抽象途径,在一个class里面不仅仅可以像C中的结构体一样定义成员变量,而且可以提供方便快捷的成员函数,而不用像在C的结构体中用函数指针来实现。

(3) 模板。C++的模板,亦即泛型编程堪称一绝,有了模板,就不用手工提供所有类型的重载版本了,而交由编译器自行生成,大大减少了代码的冗长。

(4) STL。STL是优秀的C++模板库,里面集成了大量实用的库函数,比如string,vector,list,map等(唯一可惜的是没有提供hash相关的库,同时也要留意一些接口的不一致,比如string大量使用index作为接口,而vector等其他容器则是用iterator作为接口的)。

原文地址:https://www.cnblogs.com/invisible2/p/8653193.html

时间: 2024-10-27 05:14:32

读书笔记_Effective C++_条款一:将C++视为一个语言联邦的相关文章

Effective C++_笔记_条款01_视C++为一个语言联邦

(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) C++的各种能力和特性使它成为一个无可匹敌的工具,但也可能引发某些迷惑:所有"适当用法"似乎都有例外.我们该如何理解这种语言呢?最简单的办法就是将C++视为有相关语言组成的联邦而非单一语言.在它的某个次语言中,各种规则与通例都相对简单.然而从一个次语言移往另一个次语言,守则可能改变. C++主要的次语言有四个: 1 C 所到底C++以C为基础.区块.语

读书笔记_Effective C++_习惯C++

这是一本非常经典C++书籍,也是我在工作中发现自己C++上还有很多薄弱点的时候经常拿来充电的.这本书内容很多,讲了很多如何高效地使用C++的方法,有些地方自己也没能啃透,读过一遍后很多知识点容易忘记,这次是一条一条地进行温习,之所以会分享出来是觉得对于程序员来说,好记性不如烂笔头,自己多动手往往在真正写程序的时候能够像条件反射一样写出好的代码.慢工出细活,对待技术要有谨慎和敬畏之心. 这本书推荐喜欢C++的人多读,对文中的一些观点可以自己进行实践,因为内容比较多,所以根据章节进行了划分,笔记中会

读书笔记_Effective C++_资源管理

这个章节主要讲的是资源管理相关的知识,C++程序中最常使用的资源就是动态分配内存,但内存只是必须管理的众多资源之一,其他常见的资源还有文件描述器.互斥锁.图形界面的字型和笔刷.数据库连接.以及网络sockets.无论是哪一种资源,重要的是,当你不再使用它时,必须将它还给系统. 条款十三 Investment* createInvestment(); //返回指针,指向Investment继承体系内的动态分配对象,调用者有责任删除它 通常调用这种factory函数,都需要在恰当的时候释放了pInv

读书笔记_Effective C++_构造,析构,赋值

条款五 class Empty { }; 这样的一个类,当C++处理过后,编译器会为它声明一个copy构造函数.一个copy assignment操作符.一个析构函数和一个default构造函数,所有这些函数都是public且inline. class Empty { public: Empty() { ... } Empty(const Empty& rhs) { ... } ~Empty() { ... } Empty& operator=(const Empty& rhs)

EC笔记,第一部分:1.视C++为一个语言联邦

C++可看作由以下四种次语言组合而成1.C语言    高效,内置数据类型,数组,区块,语句,指针,预处理器,没有重载.异常.模板2.类    构造,析构,封装,继承,多态,迟绑定3.模板    模板元编程,不关心数据类型,只关心数据结构与算法4.STL    标准模板库,容器,迭代器,算法,函数对象

《世界是数字的》读书笔记第一部分_硬件篇

http://home.juedui100.com/user/23927142.htmlhttp://home.juedui100.com/user/23822522.htmlhttp://home.juedui100.com/detail/23506643.htmlhttp://home.juedui100.com/user/23506643.htmlhttp://home.juedui100.com/user/23914293.htmlhttp://home.juedui100.com/us

Effective C++笔记_条款25考虑写出一个不抛出异常的swap函数

1 // lib中的swap 2 namespace std { 3 template<typename T> 4 void swap (T& a, T& b) 5 { 6 T temp(a); 7 a = b; 8 b = temp; 9 } 10 } 11 12 // 缺点:需要赋值大量的数据,但是有的时候并不要复制如此多的内容 13 class WidgetImpl { 14 public: 15 //... 16 private: 17 int a, b, c; 18

【读书笔记】C#高级编程 第十二章 动态语言扩展

(一)DLR C#4的动态功能是Dynamic Language Runtime(动态语言运行时,DLR)的一部分.DLR是添加到CLR的一系列服务. (二)dynamic类型 dynamic类型允许编写忽略编译期间的类型检查的代码.编译器假定,给dynamic类型的对象定义的任何操作都是有效的,在运行之前编译器不会检测是否存在错误. 例子: dynamic person = "人"; string firstName = person.FirstName; 这两行代码能够通过编译器编

条款1:将c++视作一个语言联邦

c++是一个多重泛型编程语言,其所支持的泛型有: 面向过程编程(procedual) 面向对象编程(object-oriented) 面向函数编程(functional) 泛型编程(generic) 元编程模式(metaprogramming):元编程模式是什么模式,没读懂就是了