提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
【C++ Primer Plus 第6版】第二章 开始学习 C++
前言
要建造好房屋,首先要打地基、搭框架。如果一开始没有牢固的结构,后面就很难建造窗子、门框、屋顶和镶木地板等。同样,学习计算机语言时,应从程序的基本结构开始学起,只有这样,才能一步一步了解其具体的细节,如循环和对象等。下面是对C++程序的基本结构做一概述,并预览后面将介绍的主题,如函数和类。
2.1 进入C++
程序对大小写敏感
2.1.1 Main()函数
1.1 函数头、函数定义(函数体、结束函数return 0;)
1.2 C++中,语句结束用分号,不能省略
1.3 Main()函数头描述的是mian()和操作系统之间的接口
1.4 Void main()、int main(void)、return 0的区别
1.5 Main()不能使用其它名称原因:因为在运行C++程序时,通常从main()函数开始执行
2.1.2 C++注释
1.6 //打头;C注释/* */
1.7 用注释说明程序内容
2.1.3 C++预处理器和iostream文件
1.8 预处理器作用:在编译之前,将iostrean文件的内容添加到程序中,在源代码被编译之前,替换或添加文本
1.9 编译指令:#include<iostrean>
1.10 使用cin和cout进行输入和输出的程序必须包含文件iostream
2.1.4 头文件名
1.11 C和C++的头文件差异
1.12 .h一般为头文件
2.1.5 名称空间
1.13 如果使用iostream,而不是iostream.h,则应使用名称空间编译指令来使iostream中的定义对程序可用
Using namespace std;
1.14 名称空间作用:用来区分多个同名函数,例如
Microflop::wanda("go dancing?"); //use Microflop namespace version
Piscine::wanda("a fish named Desire"); //use Piscine namespace version;
1.15 如果要省时,最好的方法是通过使用using 声明来实现;就可以省略掉std::(iostream);
2.1.6 使用cout进行C++输出
1.16 Cout<<”come up and c++ me some time”;<<插入运算符
1.17 控制符endl;表示重起一行。
1.18 endl也是在头文件iostream中定义的,且位于名称空间std中
1.19 换行符:\n
1.20 如果输入一空行时,使用cout<<endl;更为方便
2.1.6 使用cout进行C++输出
1.16 Cout<<”come up and c++ me some time”;<<插入运算符
1.17 控制符endl;表示重起一行。
1.18 endl也是在头文件iostream中定义的,且位于名称空间std中
1.19 换行符:\n
1.20 如果输入一空行时,使用cout<<endl;更为方便
2.1.7 C++源代码的格式化1.21 ;表示结束语句
1.22 不能把空格、制表符或回车放在元素中间,也不能把回车符放在字符串中间。
1.23 源代码中的空格和内容要规范
1.24 源代码风格:每条语名占一行;每个函数都用花括号分开等
2.2 C++语句
// carrots.cpp--food processing program
//uses and displays a veriable
#include <iostream>
int main()
{
using namespace std;
int carrots; //declare an integer variable
carrots = 25; //assign a value to the variable
cout << "I have ";
cout << carrots; //display the value of the variable
cout << "carrots.";
cout << endl;
carrots = carrots-1; //modify the variable
cout << "Crunch,crunch.Now I have" << carrots << "carrots."<<endl;
return 0;
}
2.2.1 声明语句和变量
1.25 声明变量不一定就是定义变量
1.26 声明变量时,会提供两项信息:需要的内存和该内存单元的名称
1.27 声明变量的作用:指出了要存储的数据类型和程序对存储在这里的数据使用的名称
1.28 对于声明变量,C++ 的做法是尽可能在首次使用变量前声明它
2.2.2 赋值语句
1.29 “=”,叫做赋值运算符
1.30 这样赋值也是合法的:yamaha=Baldwin=Steinway=88;
1.31 可以对变量的值进行修改:int carrots=20;carrots=carrots-1;
2.2.3 Cout的新花样
1.32 cout<<carrots;程序释义:cout将carrots替换为其当前值25;然后,把值转为合适的输出字符
1.33 在C语言中,要打印字符串“25”和int 25,可公使用C语言的多功能输出函数printf();
printf(“printing a string:%s /n”,”25”);
printf(“printing a string:%s /n”,25);
2.3 其他C++语句
2.3.2 使用cout进行拼接
2.3.3 类简介
1.35 类是用户定义的一种数据类型
1.36 类描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体
1.37 类描述了一种数据类型的全部属性(包括可使用它执行的操作),对象是根据这些描述创建的实体
1.38 类描述指定了可对类对象执行的所有操作,要对特定对象执行这些允许的操作,需要给该对象发送一条消息:共两种方式:一种方式是使用类方法(函数调用);另一种方式是重新定义运算符
2.4 函数
函数分两种:有返回值和没有返回值
2.4.1 使用有返回值的函数
1.39 函数调用,被调用函数
1.40 参数是发送给函数的信息,返回值是从函数中发送回去的值
1.41 C++程序应当为程序中使用的每个函数提供原型(定义返回值和输入参数的类型是一样的)
1.42 原型结尾的分号表明它是一条语句,这使得它是一个原型,而不是函数头。如果省略分号,编译器将把这行代码解释尾一个函数头,并要求接着提供定义该函数的函数体
1.43 函数原型:原型只描述函数接口,也就是说,它描述的是发送给函数的信息和返回的信息
1.44 函数定义:包含了函数的代码
2.4.2 函数变体
1.45 当函数需要使用多个参数时,参数间用逗号分开。比如:answer=pow(5.0,8.0);
1.46 有些函数不接受任何参数。比如:int rand(void);关键字void明确指出,该函数不接受任何参数,如果省略void;让括号为空,则C++将其解释尾一个不接受任何参数的隐式声明,比如:myGues=rand();
1.47 有些函数没有返回值。比如:bucks(1234.56);
2.4.3 用户定义的函数
1.48 对于库函数,在使用之前必须提供其原型,通常把原型放到main()定义之前头文件)
1.49 用户定义的函数,必须提供新函数的源代码,将代码放在main()的后面。(函数声明要放在前面或头文件中)
1.50 函数格式:
Type functionname(argumentlist)
{
statements
}
1.51 函数头。Void表示没有返回值,不可赋给变量。
1.52 对于有返回值的函数(比如:int main();开头的int表明,main()返回的是一个整数,空括号表明main没有参数)用return 0;来提供返回值,并结束函数。
2.4.4 用户定义的有返回值的函数
1.53 使用return返回一个值,如右图
2.4.5 在多函数程序中使用suing编译指令
1.54 为了让多个函数都能够访问名称空间std,将编译指令放在函数的外面,且位于函数的最前面
1.55 让程序能够访问名称空间std的方法有多种,下面是其中四种
将using namespace std;放在函数定义前
将using namespace std;放在特定函数定义中
在特定函数中使用类似using std::count;这样的编译指令
完全不使用using,而在需要使用名称空间std中的元素时,使用std::