第二章 开始学习C++

1. 进入C++

/*第一个C++程序*/#include <iostream>using namespace std; /*定义一个可视化*/int main(void){    cout<<"Come up an C++"<<endl;    cout<<"You won't regret it"<<endl;    return 0;}

对于一个C++ 程序次要蕴含以下元素:

  • 正文:由前缀// 或者是 /* */ 标识
  • 预处理器编译指令#include
  • 函数头:int main()
  • 编译指令:using namespace
  • 函数体:用{ } 括起来
  • 应用C++ 的cout工具显示音讯的语句
  • 完结main()函数的return语句

1.1、main()函数头

main() 被启动代码调用,而启动代码是编译器增加到程序中。

函数头形容 main() 和OS(UNIX/Linux、Windows、mac os等)间接的接口

空括号的main() 不承受任何参数。

int main(void){    statement    return 0;}

main()函数形容了函数的行为。同时也形成了两局部的 函数定义(function definition) :第一行int main()函数叫做 函数头(function heading),花括号({和})中包含的局部叫 函数体

函数体:指出函数应做什么的计算机指令。

在C++中,每条残缺的指令叫做语句。所有的语句都是以 分号完结。

main()中最初一条语句叫做 返回语句(return statement),完结main()函数。

⚠️留神:C++程序通常是以main() 函数开始执行,如果没有,程序不残缺,则编译器会指出未定义main()函数

大小写都必须精确

不须要main()函数的非凡状况:

  1. Windows中的动静链接(DLL)模块。
  2. 单片机或机器人芯片

1.2、C++正文

C++中的正文以 双斜杠(//) 打头。以行尾作为完结。

正文的作用:为程序提供解释阐明,使得程序通俗易懂。

通常标识程序的一部分或者是标识代码的某个方面。

留神点:编译器不会运行,会间接疏忽正文。

C++也能够辨认C语言的正文

C语言格调的正文

  • 多行正文:符号/* */ 之间,以 */ 作为正文的完结。
  • 单行正文:以 双斜杠(//) 开始,行尾作为完结。

1.3、预处理器和头文件

如果程序要应用C++输出或输入工具时,必须应用两行代码:

#include <iostream>using namespace std;

应用了 #include作为了预编译指令,也就是所谓的预处理器指令。

预处理器的操作:在源代码被编译之前,替换或增加文本。

例如:

#include <iostream>

像iostream这样的文件叫做 蕴含文件(include file) ———— 也被蕴含在其余的文件中,所以也叫做 头文件(header file)

头文件命名约定

头文件类型约定示例阐明
C++新式格调.h 结尾iostream.hC++程序能够应用
C新式格调.h 结尾math.hC、C++ 程序能够应用
C++ 旧式格调没有扩展名iostreamC++程序能够应用,应用namespace std;
转换后的C加上前缀c,没有扩展名cmathC++ 程序能够应用,能够应用不是C的个性,如namespace std;

1.4、名称空间(namespace)

如果程序中应用的是 iostream ,那么就须要应用名称空间编译指令来使得对程序可用。

using namespace std;

也叫做 using编译指令

1.5、应用cout进行C++的输入

    cout<<"Come up an C++"<<endl;    cout<<"You won't regret it"<<endl;

双引号 括起来的局部就是要打印的音讯。

在C++中,应用双引号括起来的一系列字符叫做 字符串,因为若干个字符组合而成。

<< 指出信息流动的门路,cout是一个预约义的对象

初识运算符重载

<< 既能够是插入运算符,也能够是左移运算符。

典型的运算符重载的状况,通过重载,同一个运算符代表不同的含意。具体含意编译器会通过上下文来确定。

常见的运算符重载例子

  • & ----> 既示意地址运算符,又示意按位AND运算符。
  • * ----> 既示意乘法,也示意对指针解除援用。

控制符endl

cout<<endl;

endl 是C++中的一个特殊符号,作用:重起一行

在输入流中插入endl使得屏幕光标移到下一行结尾。

endl在头文件iostream中定义,且位于名称空间std中。

换行符

C++也也提供了晚期C语言示意换行的办法;C语言符号\n

\n 被视为一个字符,名为换行符,也就是C++中的endl的重起一行

显示字符串时,在字符串中蕴含换行符,而不是在开端增加endl,可缩小输入量。

/*两个语法都是一样的,都是:重起一行*/cout<<"\n";cout<<endl;

1.6、C++源代码格调

C++中源代码的格调遵循以下规定:

  • 每条语句各占一行。
  • 每个函数都有一个开始花括号和一个完结花括号,两个花括号各占一行。
  • 函数中的语句都绝对于花括号进行缩进。
  • 与函数名称相干的圆括号四周没有空白

2. C++语句

程序代码例子:

#include<iostream>using namespace std;int main(){    int carrots; // 申明一个整型变量    carrots = 25; // 给变量赋值    cout<<"我有 "<<carrots<<" 个carrots."<<endl;    carrots = carrots - 1; // 对变量进行批改    cout<<"快看!快看!当初,我有 "<<carrots<<" 个carrots!"<<endl;    return 0;   }

2.1 申明语句和变量

在C++中,首次应用变量时,必须申明 。能够防止因拼写错误而难以发现错误。

申明通常指出要存储的数据类型和程序对存储在内存里的数据应用的名称。

程序中的申明语句叫作定义申明语句,简称定义。定义会使得编译器为变量分配内存

⚠️留神:申明不肯定是定义。

2.2 赋值语句

赋值语句将值赋给存储单元。

符号 = 叫作赋值运算符。 小Tips:C++中容许间断应用赋值运算符。

赋值是从右向左进行。

3. 其余C++语句

3.1 cin 和cout

cin 应用 >> 运算符从输出流中抽取字符。

能够将通过键盘输入的一列字符(即输出)转换为接管信息的变量可能承受的模式。

cout 的对象属性蕴含一个插入运算符 << ,将右侧的信息插入到输入流中。

<< 运算符能够进行多条输入语句的拼接。

3.2 类的简介

类是C++ 面向对象编程(OOP)的外围概念之一。

什么是类?

类是用户定义的一种数据类型。

要定义类,须要形容它可能示意什么信息可对数据执行什么操作

类定义形容的是:数据格式及其用法,而对象则是依据数据格式标准创立的实体

#### 两个类cin类cout类

  • cin类:istream类对象
  • cout类:ostream类对象ostream类定义形容了ostream对象示意的数据以及对它执行的操作

    两个类没有被内置到编译器中。
    留神点形容了一种数据类型的全副属性(包含应用它执行的操作)对象则是依据形容创立的实体

C++中信息发送的形式

  • 应用类办法(函数调用等)
  • 从新定义运算符

4. 函数

两种C++函数

  • 有返回值
  • 无返回值

4.1 有返回值的函数

有返回值的函数将生成一个值,而值将赋值给变量或其余的表达式中应用。

  • 被调用函数:被调用的函数
  • 调用函数:蕴含调用的函数
  • 返回值:发送回的值

参数 是发送给函数的信息, 返回值 是从函数中发送回去的值。

小Tips:对于C++编译器而言,函数的参数类型返回值类型必须统一

⚠️留神:C++程序该当为程序中应用的每个函数提供原型。

函数原型结尾必须以 分号(;) 完结。如果省略分号,编译器则认为是函数头,要求提供定义该函数的函数体。

不要混同函数原型和函数定义

函数原型只形容函数接口

函数定义蕴含函数的代码

小Tips首次应用函数之前提供原型,个别把原型放在 main()函数定义后面。

4.2 函数变体

  • 在原型中应用关键字void来指定返回类型,指出函数没有返回值。

    void bucks(double);
  • 关键字void不承受任何参数。如果省略void,让括号为空,则C++解释为一个不承受任何参数的隐式申明。

    int rand(void);

4.3 用户定义的函数

对于库函数,在应用之前必须提供其原型,通常把原型放在main()定义之前。

  • 函数格局
    函数格局为:一个函数头 + 花括号的函数体

    type functionname(arguementlist){    statements}

    C++ 不容许将函数定义嵌套在另一个函数中,每个函数定义独立。

  • 函数头
    例如main()函数头。

⚠️留神:关键字是专用词,不能用作他用。

return不能用作变量名,double不能用作函数名。

4.4 用户定义的有返回值的函数

有返回值的函数,应用关键字return来提供返回值,并完结函数。

函数的个性

  • 有函数头和函数体
  • 承受一个参数
  • 返回一个值
  • 须要一个原型

4.5 在多函数程序中应用using编译指令

让程序拜访名称空间std的4种办法

  • using namespace std; 放在函数定义之前,让文件种所有的函数都可能应用名称空间std中所有的元素。
  • using namespace std; 放在特定的函数定义之前,让该函数可能应用名称空间std中的所有元素。
  • 在特定的函数中应用相似 using std::cout;编译命令,而不是 using namespace std; 让该函数能应用指定的元素,如cout。
  • 齐全不应用编译指令using,而在须要应用名称空间std中的元素是,应用前缀std::