effective c++ 条款01 整理

书中将C++划分为4个次语言,期望将混乱的C++体系进行简单的梳理,只能说目的达到了,但这么分合适不合适呢?不知道....

(1)C(C++ without class)

初级C++确实是对C的延生,这也涉及到C++是否应该严格兼容C的问题,历史问题不去评判,但这是事实。

(2)面向对象C++(Object-Oriented C++)

涉及到类、封装、继承、多态和虚拟(动态绑定)机制,这也是C++ OOP的核心部分。

(3)泛型编程(template c++)

常接触到的有模板函数和模板类,在STL中大量应用。

(4)STL

作为一个标准模板库,核心有:容器、迭代器、算法和函数对象等,相当有用和高效。

引一下2010年8月号《程序员》刊登的拙文《C++强大背后》最后一段:

C++学习建议:

C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:

由于我主要是应用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而已,单凭语言并不能应付业务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知识”,到达第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。虽然学习C++有难度,但也是相当有趣且有满足感的。

时间: 2024-10-12 09:13:09

effective c++ 条款01 整理的相关文章

effective c++ 条款02 整理

尽量以const.enum和inline代替#define 一.#define的功能 参考:http://www.crifan.com/_define_detailed/ (1) #define的变体,即#ifndef,可以防止头头文件的重复引用 #ifdef和 #define组合,一般用于头文件中,用以实现防止多个文件对此同一个头文件的重复引用.实际使用中,即使你的头文件暂时没有被多个文件所引用,为了增加程序可读性,移植性,健壮性等,还是最好都加上.其用法一般为: #ifndef <标识>

effective c++ 条款03 整理

尽可能使用const (1)const约束指针.迭代器 const char* p = "adc"; //non-const pointer,const data char* const p = "abc"; //const pointer,non-const data const char* const p = "abc";//const pointer,const data const std::vector<T>::iterat

《Effective C++ 》学习笔记——条款01

-------------------------------------- | 其实,买这本书有几个月了, | 一直想好好拜读一下, | 但一直给自己各种借口( 欠抽啊~ ) | | 下定决心,好好读一下! | 把文章的重点,加上一些自己的理解, | 写成博文,记录学习点滴也能督促下自己. -------------------------------------- ****************************  一. Accustoming Yourself to C++ ***

Effective C++ (笔记) : 条款01 -- 条款04

条款01:视C++为一个语言联邦 条款02:尽量以const,enum,inline替换#define "宁可以编译器替换预处理器",使用#define那么在编译器之前预处理器已经完成了替换,记号名称没有进入记号表(symbol table),所以在调试或者编译错误的时候会莫名其妙.以常量替换宏是个好主意:const double AspectRatio = 1.653替换#define ASPECT_RATIO 1.653. 如果你不想让别人获得一个指针或者引用指向你的某个整数常量,

More Effective C++ 条款35 让自己习惯于标准C++ 语言

(由于本书出版于1996年,因此当时的新特性现在来说可能已经习以为常,但现在重新了解反而会起到了解C++变迁的作用) 1. 1990年后C++的重要改变 1). 增加了新的语言特性:RTTI,namespaces,bool,关键词mutable和explicit,enums作为重载函数之自变量所引发的类型晋升转换,以及"在class 定义区内直接为整数型(intergral) const static class members设定初值"的能力. 2). 扩充了Templates的特性

effective c++ 条款4 make sure that objects are initialized before they are used

1 c++ 类的数据成员的初始化发生在构造函数前 class InitialData { public: int data1; int data2; InitialData(int a, int b) { data1 = a: //this is assignment data2 = b; //this is assignment } /* InitialData(int a, int b):data1(a),data2(b) //this is initial {} */ } 2 不同cpp文

More Effective C++ 条款34 如何在一个程序中结合C++和C

1. C++和C混合使用的前提之一就是编译器产生兼容的目标文件(.lib和.dll等).所谓"兼容",指的是编译器在"预编译器相依的特性上"一致,如int和double大小,参数压栈机制等,只有在这个基础上才能讨论结合使用C++和C模块的问题. 2. 在1的基础上,要结合使用C++和C的模块,主要有以下几点需要注意: 1). name mangling(名称重整) Name mangling是C++用于支持函数重载的机制,它对重载的函数名称进行一定改变,使得每个函数

Effective C++ 条款3 尽可能用const

1. const可被施加于任何作用域内的对象,函数参数,函数返回类型,成员函数本体.用const修饰指针,如果const出现在*之前,表明指针不能更改所指向的对象的内容,如果const出现在*之后,表明指针只能指向同一块内存.另外int const*p和const int*p含义相同.如果对象成员有普通指针,那么构造该类的一个const对象时,const修饰使得该指针只能指向同一块内存,但指针指向的内容可以改变. 2. 将某些东西声明为const可以帮助编译器侦测出错误用法. 3. 编译器强制实

effective c++ 条款13 use object to manage resources.

请求的系统资源需要最终还回系统,为了避免遗忘返还这个动作,可以利用析构函数在object销毁时自动调用的特点来实现. 简单说就是用object来管理资源. 以内存资源为例 class Investment {}; Investment* creatInvestment(){...} // factory function to produce investment object void main() { Investment* pInv = creatInvestment();//call t