C++primer重点笔记
第一章 开始
1.1 编译、运行程序
- 函数的定义:1. 返回类型 2. 函数名 3. 一个括号包围的形参列表(允许为空) 4. 函数体。
- 类型:不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算。
- 从
CLI
中运行编译器步骤: 1.$ cc prog1.cc
(cc 是编译器程序的名字,$是系统提示符,编译器生成一个可执行文件(Windows下是prog1.eve
, Unix下是a.out
)) 2./a.out
(“./”指出当前可执行文件位于当前目录中) 3.echo $?
(用echo命令获得其返回值)。 - 用
gcc -o -prog1 prog1.cc
可生成一个 prog1.cc 的文件。
1.2 初识输入与输出
iostream
库:包含两个基础类型 iostream 与 ostream (输入流与输出流)。- 流(stream):一个流就是一个字符序列,是从IO设备读出或写入IO设备(随着时间的推移,字符是顺序生成或消耗的)。
- 四个IO对象:1.
cin
(标准输入)是一个istream
类型的对象 2.cout
(标准输出)是一个ostream
类型的对象 3.cerr
(输出警告和错误信息)是一个ostream
类型的对象 4.clog
(输出程序运行时的一般错误信息)是一个ostream
类型的对象。 - 向流中写入数据:使用 输出运算符(<<) 来在标准输出上打印信息,<<运算符接受两个对象:左侧对象必须是一个
ostream
对象,右侧的运算对象是要打印的值。 endl
(操纵符):写入endl
的的效果是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。缓冲刷(endl)可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是仅停留在内存中等待写入流。- 前缀
std::
指出名字cout
和endl
是定义在名为std
的命名空间( namespace )中的,命名空间可以帮助避免不经意的名字定义冲突,以及使用库中相同的名字导致的错误,标准库定义的所有名字都在命名空间std
中。 - 从流读取数据:输入运算符(<<)接受一个
istream
作为其左侧对象,接受一个对象作为其右侧对象,它从给定的istream
读入数据,并存入给定对象中。 - 一个注释不能嵌套在另一个注释之内,单行注释中的任何内容都会被忽略。
1.3 控制流
1.3.1 while 语句
while
语句的基本形式:while (condition) statement
。while
语句反复执行一段代码,直到给定条件为假为止。即交替检测condition
条件和执行关联的语句statement
,直到condition
为假时停止。
1.3.2 for 语句
for
语句用于在循环条件中检测变量、在循环体重递增变量的模式,起到了简化while
语句的作用。for
语句的组成:循环头(由一个初始化语句、一个循环条件以及一个表达式组成)和循环体。
1.3.3 读取数量不定的输入数据
- 基本用法:
while (std::cin >> value) { }
- 当遇到文件结束符(EOF)或遇到一个无效输入(读入的类型与value的类型不符合),
istream
对象的状态就会变为无效,处于无效状态的istream
对象就会使条件变为假。
1.3.4 if 语句
- 基本用法:
if (condition) { statement}
- if 语句起到了判断作用,当condition为假时就不执行statement,反之,则执行。
1.4 类简介
1.4.1 类支持的操作
- 从类中调用一个函数进行对对象的操作;
- 用输入运算符(<<)和输出运算符(>>)读、写对象;
- 用赋值运算符(=)将一个对象的值赋值给另一个对象;
- 用加法运算符(+)将两个对象相加。
类定义了行为,类的作者决定了类类型对象上可以使用的所有操作。
1.4.2 初识成员函数
- 成员函数是定义为类的一部分的函数,又称为方法。
- 可用点运算符( . ) 调用类中的函数,其只能用于类类型的对象,左侧运算对象必须是一个类类型的对象,右侧运算对象必须是该类型的一个成员名,运算结果为右侧运算对象指定的成员。
- 可用 调用运算符 (())来调用一个函数,括号里面放置的是实参列表(可能为空)。