第二章:开始学习C++

一、进入C++

1.main()函数的标准

int main()
{

return 0;
}

2.cin和cout进行输入和输出的程序必须包含文件iostream

3.头文件名字

《C++primer plus》学习笔记——第二章_ios

4.名称空间

如果不用using

Microflop::wanda(".....");

Piscine::wanda("....");

上者将其定义放到一个名为Microflop的名称空间,全称如上述所示;
下者的全称如下所示;

iostream中定义的用于输出的cout变量实际上是std::cout,endl实际上是std::endl;

using  namespace std;
表明可以使用std名称空间中定义的名称,而不必使用std::前缀,对于简单程序而言,采用何种名称管理方法无关紧要;

上述是一种偷懒的做法,更好的办法是,是使用所需的名称即可;
using std::out;
using std::endl;
using std::cin;

5.使用cout进行C++输出

cout<<".."
双括号括起来的是要打印的消息,在C++中,用双括号括起来的一系列字符叫做**字符串**

《C++primer plus》学习笔记——第二章_ios_02

1)控制符endl

表示:重启一行,endl也是在头文件iostream中定义的,位于名称空间std中;

2)换行符

《C++primer plus》学习笔记——第二章_其他_03

区别就是:endl能够保证立即显示在屏幕上,而“\n”不能提供这样的保证。

6.C++源代码的格式化

二,C++语句

要将信息项数据存储在计算机中,必须指出信息的存储位置和所需的内存空间。

1)对于变量声明

声明通常指出了要存储的数据类型和程序对存储在这里的数据使用的名称;
C++的做法是尽可能在首次使用变量前声明它;

2)赋值语句

可以连续使用赋值运算符
《C++primer plus》学习笔记——第二章_其他_04

cout的智能行为源自C++的面向对象特性。实际上,C++插入运算符(<<)将根据其后的数据类型相应地调整其行为,这是一个运算符重载的例子。
eg:

int number=25;
cout<<number

程序没有打印number,而是打印存储在number中的整数值,即25。实际上,将这两个操作合二为一了,首先,cout将number替换为当前值25,然后,把值转换为合适的输出字符。
《C++primer plus》学习笔记——第二章_其他_05

3)其它C++语句

可以将一条语句放在4行上:

eg:把Now you have 14 carrots.用下面的来表示

cout<<"Now you have ";
cout<<carrots;
cout<<"carrots";
cout<<endl;

4)类简介

定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。

C++类对应于某些语言中的对象类型,而C++对象对应于对象实例或实例变量

函数可以来自函数库,类也可以来自类库。类描述指定了可对类对象执行的所有操作,要对特定对象执行这些允许的操作,需要给该对象发送一条消息。eg:cout对象显示一个字符串,则应向它发送一条消息,告诉他:“对象,显示这些内容!”。
C++提供了两种发送消息的方式:1)使用类方法(函数调用);2)重新定义运算发,eg:cin,cout,

cout<<"…", 就是重新定义<<运算

《C++primer plus》学习笔记——第二章_ci_06

5)函数

C++函数分为:有返回值的和无返回值的

A.有返回值的函数

首先是调用过程,如下所示:
《C++primer plus》学习笔记——第二章_头文件_07

《C++primer plus》学习笔记——第二章_ci_08

在使用函数之前,C++编译器必须知道函数的参数类型和返回值类型。C++提供这些信息的方式是使用函数原型语句。

C++程序会为程序中的每个函数提供原型。函数原型之于函数就像变量声明之于变量,需要指出涉及的类型。

eg:
sqart()的描述应该和下面代码中使用的函数相同:

double x;
x=sqrt(6.25)

sqrt()的函数原型像这样:

double sqart(double);

第一个double意味着sqrt()将返回一个double值,括号中的double意味着sqrt()需要一个double参数。原型结尾的分号表明它是一条语句,这使得它是一个原型,而不是函数头(若是函数头,则需要紧接着提供该函数的函数体)。

能够提供原型的两种方法:
1)在源代码文件中输入函数原型
2)包含头文件cmath(or math.h),其中定义了原型(更好,why?对于C++库函数中的每个函数,都在一个或多个头文件中提供了其原型)

函数原型只描述了函数接口,不要混淆函数原型和函数定义。库文件中包含了函数的编译代码,而头文件中则包含了原型。

eg:

《C++primer plus》学习笔记——第二章_ios_09

C++允许在程序的任何地方申明新变量,C++还允许在创建变量时,就对她进行赋值,,这称之为初始化,eg:

double side=sqrt(area);

B. 函数变体

在cstlib or stdlib.h头文件相关的库中,包含一个rand()函数,该函数不接受任何参数,并返回一个随机整数,该函数的原型如下:

int rand(boid);

关键字void表明:该函数不接受任何参数。若省略void,则C++将其解释为一个不接受任何参数的隐式申明。eg:my=rand();

C.用户定义的函数

《C++primer plus》学习笔记——第二章_ci_10

// ourfunc.cpp -- defining your own function
#include <iostream>
void simon(int);    // function prototype for simon()

int main()
{
    using namespace std;
    simon(3);       // call the simon() function
    cout << "Pick an integer: ";
    int count;
    cin >> count;
    simon(count);   // call it again
    cout << "Done!" << endl;
	// cin.get();
    // cin.get();
    return 0;
}

void simon(int n)   // define the simon() function
{
    using namespace std;

    cout << "Simon says touch your toes " << n << " times." << endl;
}                   // void functions don't need return statements

对上面这个函数eg的一些说明

函数格式

有一个函数头,然后是花括号中的函数体

在这里插入代码片《C++primer plus》学习笔记——第二章_头文件_11

函数头

void simon(int n)

void表明simon()没有返回值,因此调用simon()不会生成可在main()中将其赋给变量的数字。由于simon()没有返回值,因此像如下的调用它:

simp=simon(3);

《C++primer plus》学习笔记——第二章_ci_12

这个时候再看看main()函数头,就知道为啥 要return 0;

《C++primer plus》学习笔记——第二章_ios_13

这个0返回给操作系统了。

D.用户定义的有返回值的函数

直接看例子:

// convert.cpp -- converts stone to pounds
#include <iostream>
int stonetolb(int);     // function prototype
int main()
{
    using namespace std;
    int stone;
    cout << "Enter the weight in stone: ";
    cin >> stone;
    int pounds = stonetolb(stone);
    cout << stone << " stone = ";
    cout << pounds << " pounds." << endl;
	// cin.get();
    // cin.get();
    return 0;
}

int stonetolb(int sts)
{
     return 14 * sts;
}

《C++primer plus》学习笔记——第二章_ci_14

该例子表明:函数原型描述了函数接口,即函数如何与程序的其它部分交互。参数列表指出了何种信息将被传递给函数,函数类型指出了返回值的类型。

《C++primer plus》学习笔记——第二章_ci_15

E.在多函数程序中使用using编译命令

《C++primer plus》学习笔记——第二章_ci_16

**

总结

**

《C++primer plus》学习笔记——第二章_ci_17

《C++primer plus》学习笔记——第二章_头文件_18