C++基础知识回顾

1.endl是一个特殊值,称为操纵符(manipulator),将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区(buffer)。通过刷新缓冲区,用户可以立即看到写入到流中的输出。

2.作用域标示符(scope operator,::操作符)

3.std::cin>>v1;

  std::cin>>v2;

  输入操作的效果是从标准输入读取两个值,将第一个存放的v1中,第二个存放在v2中。

4.初始化是指在变量定义时就给定一个值。

5.错误的注释比没有注释更糟,因为它会误导后来者。

6.文件结束符:

不同的操作系统使用不同的值作为文件结束符。Windows系统下是Ctrl+ZUnix,包括iOS,通常使用Ctrl+D

7.C++是静态类型(statically typed)语言,在编译时执行类型检查。

8.表示整数、字符和布尔值的算数类型合称为整型(integral type)。

9.在有些情况下,使用unsigned类型比较明智,可以避免值越界导致结果为负数的可能性。

10.不可打印字符和特殊字符都用转义字符书写。

11.C++中所有的字符串字面值都由编译器自动在行尾加上一个空格。

12.字符串字面值的连接:

两个相邻的仅由空格、制表符或换行符分开的字符串字面值(或宽字符串字面值),可连接成一个新字符串字面值。这使得多行书写长字符串字面值变得简单:

std::cout<< “a multi-line ”

“string literal “

“using concatenation”

<<std::endl;

输出结果:a multi-line string literal using concatenation

连接不同类型的行为标准没有定义。

13.在一行的末尾加一反斜线符号可将此行和下一行当作同一行处理。

std:cou\

t << “Hi” << st\

d::endl;

等价于:std::cout << “Hi” <<std::endl;

注意:反斜线符号必须的该行的尾字符——不允许其后面有注释或空格。同样,后继行行首的任何空格和制表符都是字符串字面值的一部分。正因如此,长字符串字面值的后继行才不会有政策的缩进。

14.程序不应该依赖机器相关的行为。

15.标识符(identifier),可以由字母、数字和下划线组成。变量名必须以字母和下划线开头,并且区分大小写。

16.标识符不能包含两个连续的下划线,也不能以下划线开头后面紧跟一个大写字母。

17.命名习惯最重要的是保持一致。

18.复制初始化:int ival = 1024;

   直接初始化:int ival(1024);

   初始化不是赋值。初始化指创建变量并给它赋予初始值,而赋值则是擦除对象的当前值并用新值代替。

19.在C++语言中,变量可以声明多次,但是只能定义一次,而且变量在使用之前必须定义或声明。

20.全局作用域

  命名空间作用域

  类作用域

  局部作用域

  语句作用域

21.局部变量的定义可以屏蔽(hide)全局变量。

22.通常把一个对象定义在它首次使用的地方是一个很好的办法。

23.const对象默认为文件的局部变量

   在全局作用域声明的const变量是定位该对象的文件的局部变量。此变量只存在于那个文件中,不能被其他文件访问。

通过指定const变量为extern,就可以在整个程序中访问const对象:

extern const int bufSize = 1024

24.引用

引用必须用与该引用同类型的对象初始化:

int inval = 1024;

int &refVal = ival;

int &refVal2 = 10; // 错误:引用必须用对象初始化

引用 == 别名

因为引用只是它绑定的对象的另一个名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上。

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

初始化是指明引用指向哪一个对象的唯一方法。

25.const引用

const引用是指向const对象的引用。

cosnt int ival = 1024;

const int &refVal = ival;

int &ref2 = ival;    // 错误:非const引用不能指向const对象

普通的引用绑定到const对象是不合法的。

const引用可以初始化不同类型的对象或者初始化右值,如字面值常量:

int i = 42;

const int &r = 42;

const int &r2 = r + i;

const引用是只读的。

26.typedef名字

typedef用来定义类型的同义词:

typedef double wages

typedef通常被用于以下三种目的:

·为了隐藏特定类型的实现,强调使用类型的目的;

·简化复杂的类型定义,使其更易理解;

·允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。

27.枚举

枚举的定义包括关键字enum,其后是一个可选的枚举类型名,和一个用花括号括起来、用逗号分开的枚举成员(enumerator)列表。

enum open_modes { input, output, append};

默认地,第一个枚举成员赋值为0,后面的每个枚举成员赋的值比前面的大1.

枚举成员是常量。用来初始化枚举成员的值必须是一个常量表达式(constant expression)。

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

// point2d is 2, point2w is 3, point3d is 3, point3w is 4

enum Points { point2d = 2, point2w,

point3d = 3, point3w };

28.类定义以关键字class开始,其后是该类的名字标识符。类体位于花括号里面。花括号后面必须要跟一个分号。

29.头文件用于声明而不用于定义

因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。

头文件可以定义类、值在编译时就已知到的const对象和inline函数。

当我们在头文件中定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。

如果const变量不是用常量表达式初始化,那么它就不应该在头文件中定义。相反,和其他的变量一样,该const变量应该在一个源文件中定义并初始化。应该在头文件中为它天津extern声明,以使其能被多个文件共享。

30.头文件保护符

头文件保护符(header guard)用于避免在已经见到头文件的情况下重新处理该头文件的内容。预处理器变量:

#ifndef _SALESITEM_H_

#define _SALESITEM_H_

// 在此处定义Sales_item类和相关的方法

#endif

31.#include <iostream.h> 和 #include “hello.h”

尖括号(<>)包含的认为是标准头文件,编译器将会在预定义的位置集查找该头文件。引号(“”)包含的认为是非系统头文件,查找通常开始于源文件所在的路径。

32.stringsize()方法返回值为string::size_type类型。不要把size的返回值赋给一个int变量。

size_type存储的string的长度是int所能存储的两倍。

size_type属于配套类型,配套类型与机器无关。

33.string类型通过下标操作符([ ])来访问string对象中的单个字符。

34.现代C++程序应尽量使用vector和迭代器类型,而避免使用低级的数组和指针。设计良好的程序只有在强调速度时才在类实现的内部使用数组和指针。

C++基础知识回顾,布布扣,bubuko.com

C++基础知识回顾

上一篇:WPF多线程问题


下一篇:java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决(转)