设为首页 加入收藏

TOP

C++ Primer 4th 读书笔记(第一部分)(一)
2015-07-20 17:45:07 来源: 作者: 【 】 浏览:10
Tags:Primer 4th 读书 笔记 第一部分

虽然,有一定的c++基础(因为本科就学会了这一种,哈哈),但是还是决定系统的读一遍这本书(之前有零星看过数次。。汗)。

留作自己以后参考。(内容会不定期更改,不断学习(此处应为长音~~))

大部分都是自己掌握的不够扎实的地方和以前没有注意的一些细节。

书中好多地方,详述了知识出现的缘由,最起码是指出为了解决什么问题而出现的!!


前言部分

1.“...大量使用了前后交叉引用..."(挺适合自己的,我想知道原文是怎么的,希望以后有机会对原版的时候补充~)

2.作者对本书的定位是本指南性读物。。。

3.作者假定读者已经掌握了一种现代结构化语言!

4.学到足够的知识去创建自己的抽象(于第三到第五部分讨论)


快速入门部分

1.‘操作系统通过main函数返回的值来确定程序是否成功执行完毕。’

2.IDE (Integrated Development Environment) 集成开发环境(书中不介绍~~)

3.注释comment

4.读入未知数目的整数输入(利用 输入操作符>> 返回其左操作数实现)

#include "stdafx.h"
#include
  
   
using namespace std;


int main()
{
int sum=0,value;
while(cin>>value)
sum+=value;
cout<
    
    

关于输入结束,详见读入未知数目的输入(输入非整数结束)


变量和基本类型

1.基本字符集(char)

扩展字符集(wchar_t)

2.整型(integral type):表示整数、字符和布尔值的算术类型的合称

3.字面值规则

20 0240X14

20L 20UL 20FL(F单精度)

科学计数法

字符串字面值:为了兼容C语言C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。(类型:const char类型的数组)

4.转义字符 \***

5.初始化(创建变量并赋值) 赋值(擦除对象的当前值并用新值代替)

int a = 10;copy-initialization 更灵活且效率更高

int a(10);direct-initialization

6.构造函数(constructor)定义如何进行初始化的成员函数。(可以有多个)

PS:(P43第二小节末一句有点小瑕疵,可以这样理解)有多个初始化参数时不能使用复制初始化。

7.定义(definition)用于为变量分配存储空间,还可以为变量指定初始值。

声明(declaration)用于向程序表明变量的类型和名字 extern

	int i;				//declares and defines i
	extern int i;		//declares but does not define i
	extern int i = 1;	//definition
8.非const变量默认为extern。const变量默认时是定义该变量的文件的局部变量。

	int i;					//全局变量
	const int i = 1;			//文件的局部变量
	extern const int i = 1;			//const定义时必须初始化

(const变量默认时是定义该变量的文件的局部变量。)why?允许const变量定义在头文件中。见13

const变量定义时必须初始化!(利用定义只有一次,达到不能修改的目的)

可以用const对象初始化非const对象,反之亦然。因为初始化复制了初始化式的值。

9.引用(reference)就是它绑定对象的另一个名字。引用返回左值。主要用作函数的形式参数。

a reference must be initialized, and initializer must be an object.

当引用初始化后,只要引用存在就保持绑定到初始化时指向的对象。不可能将引用绑定到另一个对象。

复合类型(compound type 用其它类型定义的类型)(注:不能定义引用类型的引用)

10.typedef可以用来定义类型的同义词

typedef的目的之一:一种类型用于多个目的时,使得每次使用该类型的目的明确。

PS :本书部分翻译确实不太准确,虽然我还没看原版,但是感觉是酱紫的。。

11.枚举enumeration:解决数值的相关联问题。

枚举成员值可以是不唯一的。

每个enum都定义一种唯一的类型。枚举类型的对象的初始化或赋值,只能通过其枚举成员或同一枚举类型的其它对象来进行!

12.class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员为public;class的成员为private。

13.头文件(header file)不应该含有定义!

三个例外:类、(值在编译时就已知道的)const对象、inline函数。

原因:编译器需要知道他们的定义来生成代码。

const对象定义在头文件中时,必须是用常量表达式初始化的const对象!ps:后续章节-const对象定义在头文件中(待完善)

14.#include设施是C++预处理器(preprocessor)的一部分。

#include指示只接受一个参数:头文件名。预处理器用指定的头文件的内容替代每个#include。

15.头文件保护符(header guard),用于避免在已经见到头文件的情况下重新处理该头文件的内容。(实际就是防止多重定义)
预处理器指示 #ifndef #define #endif

预处理器变量:有两种状态(已定义和未定义)。不能用预处理器变量给自定义的变量命名(如 a=NULL //error)。


标准库类型

1.抽象数据类型ADT(abstract data type)

2.头文件中应该只定义确实必要的东西。

使用完全限定的标准库名字,即不要using声明。(因为包含头文件的程序也会有此using声明,不管其是否需要)

3.字符串字面值与标准库string类型不是同一种类型。

4.读入未知数目的string对象

string word;
//read until end-of-file, writing each word to a new line
while(cin >> word){
	cout <
      

       



       

5.读入未知数目的行

6.不要把string的size操作的返回值赋值给一个int变量!(其返回值为:string::size_type类型,不返回int类型的目的是machine-independent)

保存一个string对象size的最安全的方法就是使用标准库类型string::size_type。

string对象的索引变量最好也用string::size_type类型。

7.标准库类型尽量设计得和基本数据类型一样方便易用。

8.string库类型的赋值操作:释放原内存,分配新内存,复制。

9.C标准库头文件命名形式为name.h,而C++版本的此头文件的命名形式为cname(c表示这个头文件源自C标准库)。例cctype和ctype.h

通常,C++程序应该采用cname这种头文件的版本。

10.vector对象动态增长

11.vector对象的size,返回相应vector类定义的size_type的值。

vector
        
         ::size_type   //ok
vector::
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇CF D. Bag of mice(概率dp) 下一篇UVA - 11291 Smeech (模拟)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)
·Linux常用命令60条( (2025-12-25 00:50:40)
·nginx 监听一个端口 (2025-12-25 00:19:30)
·整个互联网就没有一 (2025-12-25 00:19:27)