`
soulmachine
  • 浏览: 112813 次
  • 性别: Icon_minigender_1
  • 来自: 湖北武汉
社区版块
存档分类
最新评论

C++Primer(第四版)摘要

阅读更多

第一章 快速入门

main函数的返回值必须是int型。

在写C++程序时,大部分出现空格的地方可用换行符答题,但字符串字面量中的空格例外。另一个例外是空格不允许出现在预处理器指示中。

任何允许有制表符、空格或换行的地方都允许放注释对。

第二章 变量和基本类型

基本类型:bool, char, wchar_t, short, int, logn, float, double, long double.

整型字面量默认类型为int   long。可在后加LlUu以及UL指定其类型。

浮点字面量默认为double,可在后加上FL

可在字符字面量后加L使之成为wchar_t

连接字符串字面量和宽字符串字面量,其行为是未定义的。

C++ 保留了一些词用作操作符替代用于支持某些不支持C++ 操作符的字符集,这些词不能用作标志符,如:and or nor xor……

C++还保留了一组标志符用于标准库,标志符不能包含两个连续的下划线,也不能以下划线开头后跟一个大写字符。

C++支持两种初始化:复制初始化和直接初始化:

int ival(1024);        //direct-initialization

int ival = 1024;      //copy-initialization

const 引用只能绑定到同类型的对象;const 引用则可绑定到相关但不同类型的对象或绑定到右值。

第三章 标准库类型

在头文件中,请不要用using 引入命名空间,要用完全限定的标准库名称。

string 对象和字符串字面值混合连接时,+ 操作符左右必须至少有一个string 对象。

现代C++程序员倾向于使用迭代器而不是下标。所有的标准库容器都定义了相应的迭代器,只有少数几种才定义了下标操作。

第四章 数组和指针

const 变量和运行时才知道其值的 const 变量不能用做数组的维数。

允许0字面量或编译时获得0值的const变量赋给指针,但不允许将一个值为0 int 型变量赋给指针。

void 指针只支持几种有限的操作:与另一个指针比较;向函数传递void*指针或返回void* 指针;给另一个void*指针赋值。不允许使用void* 指针操纵它所指向的对象。

指针和引用的差别:引用必须在定义时初始化;引用总是指向同一个对象。

两个指针的减法操作的结果是ptrdiff_t 类型的。

typedef string *pstring;

const pstring cstr;

cstr是一个指向string 对象的 const指针!

动态分配数组时,如果数组元素具有类类型,将使用该类的默认构造函数实现初始化;如果数组元素是基本类型,则无初始化,但可在后加()强制初始化。

char *cp = new char[0]; //ok,but can't be dereferenced

但是此指针可以进行比较运算,+0-0

第五章 表达式

不要在一个表达式中对同一个变量进行多次++ 操作。

第六章 语句

只能在最后一个case default 中定义变量,这是为了避免出现代码跳过变量定义和初始化的情况。

goto 语句不能向后跳过变量定义语句。

标准异常类型只定义了一个what 函数,返回一个C字符串。

第七章 函数

函数不能返回另一个函数或数组,但可以返回指向它们的指针。

将引用或指针形参定义为const 来重载函数是合法的。

第八章 标准IO

IO 对象不可复制或赋值。

第九章 顺序容器

将一个容器复制给另一个容器时,类型必须精确匹配。

vector<int></int> ivec;

vector<int></int> ivec2(ivec);        //ok

vector<double></double>dvec(ivec);    //error

list<int></int> ilist(ivec);               //error

stack 可用三个做容器;

queue需要基本容器支持push_front 操作,只能用deque list

priority_queue 要求基本容器有随机访问功能,只能用vector deque

第十章 关联容器

关联容器不能通过大小来定义,因为这样的话就无法知道键所对应的值是什么。

第十一章 泛型算法

第十二章

构造函数分两个阶段执行:(1)初始化阶段;(2)计算阶段。

必须对const 或引用类型成员以及没有默认构造函数的类类型成员使用初始化式。

在初始化式避免使用成员初始化另一个成员。

当构造函数被声明为explicit ,编译不使用它作为类型转换操作符。

当一个类设为友元,友元类的所有方法可以访问自己的非共有成员。

static 数据成员必须在类定义体外定义。(P401)

const static 数据成员在类的定义体中初始化时,该数据成员仍必须在类定义外定义。(P401)

第十三章 复制控制

合成拷贝构造函数直接复制内置类型成员的值,类类型成员使用该类的拷贝构造函数进行复制,数组成员则复制其每一个数组元素。

为了防止复制,可以将拷贝构造函数声明为private ;如果想连友元和成员中的复制也禁止,就可以声明一个private 拷贝构造函数。

第十四章 重载操作符和转换、

重载操作符必须具有一个类类型操作数。

重载操作符并不保证操作数的求值顺序。

(1)    =[]()->必须重载为成员函数,否则会编译错误;

(2)    改变对象状态或与给定类型紧密联系的其他一些操作符,如自增、自减和解引用,通常定义为类成员。

(3)    对称的操作符,最好定义为非成员函数。

IO 操作符必须为非成员函数。

一般不要重载合成赋值操作符,&,&&||

一般为[]定义两个版本:一个为非const 函数并返回引用,一个为const函数并返回cosnt引用。

转换函数operator type()

(1)    不要定义相互转换的类;

(2)    避免到基本类型的转换,如果定义了,不要定义接受算术类型的操作符的重载版本;不要定义转换到一个以上算术类型的转换。

第十五章 面向对象的编程

要触发动态绑定,必须满足两个条件:

(1)    只有虚成员函数才能进行动态绑定;

(2)    必须通过基类类型的引用或指针进行函数调用。

如果一个调用省略了具有默认值的实参,则所用的值由调用该函数的类型定义,与对象的动态绑定类型无关。

派生类可以恢复继承成员的访问级别,也仅仅只能“恢复”。

struct 默认成员访问级别为public ,而class privatestruct 默认继承访问级别为public ,而class private

友元关系不能继承。

构造函数不能是虚函数,赋值操作符不应是虚函数。

运行析构函数或构造函数期间,对象都是不完整的,编译器将对象的类型视为在此期间发生了变化。

如果在构造函数或析构函数中调用虚函数,则运行的是构造函数或析构函数自身类型定义的版本。

第十六章 模板与泛型编程

编写泛型代码的两个重要原则:

(1)    模板形参是const引用;

(2)    函数体中的测试只用比较。

这是为了让实参类型的限制尽可能少。

函数模板的类型形参只支持:

(1)    const 转换:接受const 引用或 const 指针的函数模板可以分别用非const对象的引用或或指针来调用,无须产生新的实例化;

(2)    数组或函数到指针的转换。

第十七章 用于大型程序设计的工具

当抛出一个表达式的时候,被抛出对象的静态编译类型将决定异常对象的类型。

析构函数应该从不抛出异常。

异常类型必须与catch 说明符类型完全匹配,但:

(1)    允许从非const const 引用的转换;

(2)    允许从派生类到基类的转换;

(3)    允许数组和函数到指针的转换。

 

 

这是第二次捧起这本巨著来读了,记得2004年是就是靠这书的第二版开始啃C++的,到如今读这本书是仍时时感到不寒而栗。因此把阅读过程中引起了自己注意的部分摘抄了下来,红色部分表示在阅读过程中感到意外或不能理解的,请路过高手解惑!

分享到:
评论
2 楼 soulmachine 2007-04-04  
javaeye的编辑器太不好用了。我再重新编辑下
1 楼 bigpanda 2007-04-04  
可以把红色部分的章节注明一下,以方便查阅。

相关推荐

    C++ Primer第四版【中文高清扫描版】.pdf

    《C++ Primer 第四版》是著名的C++编程语言教程,由Stanley B. Lippman、Josée Lajoie和Barbara E. Moo三位作者共同撰写。该书自出版以来,已成为广大程序员学习C++的必备书籍。第四版对前三版的内容进行了彻底的...

    C++primer第四版源代码

    《C++ Primer》第四版是C++编程领域的一本经典教材,由Lippman, Lajoie, and Moo三位作者合著。这本书深入浅出地介绍了C++语言的基础知识、中级概念以及高级特性,旨在帮助读者掌握现代C++编程技术。源代码文件包含...

    C++Primer 第四版课后习题解答(第1~18章完整答案)完整版

    《C++ Primer 第四版》是一本经典的C++学习书籍,涵盖了从基础到高级的各种主题。这份课后习题解答提供了第1至18章的完整答案,旨在帮助读者深入理解书中的概念并提高编程技能。 第一章“快速入门”引导读者进入C++...

    c++primer练习答案(完整版)

    c++primer第四版练习答案完整版。

    C++ Primer中文第四版配套实例

    《C++ Primer中文第四版配套实例》是一本深入学习C++编程语言的重要参考资料,它与国际知名编程教材《C++ Primer》第四版紧密结合,旨在帮助读者通过实践加深对C++概念的理解。本套实例覆盖了C++语言的核心特性和...

    c++ primer第四版示例源代码

    《C++ Primer 第四版》是C++编程领域的一本经典教材,由Lippman、Lajoie和 Moo三位作者联合编写。这本书深入浅出地介绍了C++语言的基础和高级特性,是许多初学者和进阶者的学习宝典。本压缩包包含的就是书中各个章节...

    C++primer第四版英文版

    ### C++ Primer 第四版知识点概述 #### 一、书籍基本信息 - **书名**:C++ Primer 第四版 - **作者**:Stanley B. Lippman, Jos Lajoie, Barbara E. Moo - **出版社**:Addison Wesley Professional - **出版日期**...

    C++Primer(第4版)-课后习题答案.pdf

    《C++ Primer(第4版)》是一本深入学习C++编程语言的经典教材,其课后习题答案提供了丰富的实践练习和问题解析,帮助读者巩固并深化对C++语法、概念的理解。以下将针对各章节的主要知识点进行详细阐述: 1. 第一章...

    C++ Primer第五版 高清扫描pdf

    C++ Primer第五版 高清扫描pdf,压缩版,下载后解压即可

    C++ Primer第四版PDF

    ### C++ Primer第四版PDF知识点概述 #### 一、C++ Primer第四版概览 - **定位**: 作为一本入门级别的教程,C++ Primer第四版不仅适合初学者,也适用于有一定编程基础的学习者。 - **内容特点**: 本书对C++语言本身...

    C++ Primer第四版习题(完整版)

    《C++ Primer第四版》是学习C++编程语言的经典教材之一,它涵盖了C++的基础到高级概念,包括语法、对象、类、模板、标准库等多个方面。本习题集为完整版,旨在帮助读者深入理解和掌握书中所讲解的知识点。 1. **C++...

    C++ primer第五版,英文版

    锻炼自己的全英文C++ primer第五版电子版,更加适合于有一定代码功底人士阅读,初学者(你要读也很棒棒)阅读难度较大。

    c++ Primer第五版中文版 高清版 完整版

    c++ Primer第五版中文版,带书签,内容清晰容易阅读。

    C++Primer 习题解答(第4版)--绝对完整版

    这本习题解答是针对C++ Primer(第四版)教材的,旨在帮助读者巩固和深化对C++的理解。在学习C++的过程中,解决习题是提升编程技能的关键步骤,这本书提供了全面的习题解析,涵盖了从基础语法到高级特性的各个层面。...

    c++ primer 第四版 中英对照 源代码 勘误

    《C++ Primer》第四版是C++编程领域的一本经典教材,由Stanley B. Lippman、Josée Lajoie和Barbara E. Moo共同撰写。这本书详细介绍了C++语言的基础知识,深入讲解了面向对象编程的概念,并涵盖了许多现代C++特性。...

    C++ Primer 第四版 答案 完整

    标题和描述中提到的《C++ Primer第四版答案完整》是指一本广泛被计算机科学和软件工程领域的学生与专业人士使用的教材的配套答案集。这本教材是学习C++编程语言的经典之作,由Stanley B. Lippman、Josée Lajoie和...

    C++primer第五版英文版

    《C++ Primer 第五版》是一本深入探讨C++编程语言的书籍,由资深程序员Stanley B. Lippman、Josée Lajoie和Barbara E. Moo共同撰写。这三位作者在C++社区内具有极高的知名度,特别是Lippman先生,他长期参与C++的...

    C++Primer第四版完整答案

    《C++ Primer》是C++编程领域的一本经典教材,其第四版更是广受欢迎,深受初学者和进阶者喜爱。这本书深入浅出地介绍了C++语言的基础知识、核心概念以及高级特性。作为完整的答案集,它为读者提供了详尽的解答,帮助...

    C++ Primer第四版习题答案(1~16章)清晰

    C++ Primer第四版习题答案(1~16章)非扫描

Global site tag (gtag.js) - Google Analytics