第二章 开始学习 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() 函数
的非凡状况:
- Windows 中的
动静链接(DLL)
模块。- 单片机或机器人芯片
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.h | C++ 程序能够应用 |
C 新式格调 | 以 .h 结尾 |
math.h | C、C++ 程序能够应用 |
C++ 旧式格调 | 没有扩展名 | iostream | C++ 程序能够应用,应用 namespace std; |
转换后的 C | 加上前缀 c,没有扩展名 | cmath | C++ 程序能够应用,能够应用不是 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::
。