C++ Primer Plus 第2章

本文深入讲解C++编程的基础知识,包括main函数的作用、预处理器的使用、名称空间的概念、C++输入输出机制,以及如何使用cout进行输出。同时,文章对比了C++与C的异同,介绍了函数原型和定义的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第2章 开始学习C++

2.1 进入C++

本节的主要任务:理解下面的代码

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!";
    cout << endl;
    cout << "GREAT" << endl;
    return 0;
}

2.1.1 main()函数
①main函数头int描述的是main()和操作系统之间的接口
在C++中,main()函数的主流写法为.int main(void)
明确指出不接受任何参数
在C中,如果写成main(),即省略返回值,则默认返回值是int,省略说明是否接受参数意味着对是否接受参数保持沉默,而在C++中省略返回值,不行,省略说明是否接受参数,会存在移植性问题
②在C++中,如果main()函数末尾没有return 0; 程序会隐含加上
③有的程序可以没有main()函数,比如在Windows编程中可以编写一个动态链接库(DLL)模块,这是其他Windows程序可以使用的代码,不需要main()

2.1.2 C++预处理器和iostream文件
如果程序要使用C++输入输出工具,需要码

#include <iostream>
using namespace std;

c++和C一样,都拥有程序开始前自动调用的预处理器,预处理器识别编译指令#include,把iostream文件的内容添加到程序中。
因为C++的输入输出方案涉及iostream文件中的多个定义
#inlcude 编译指令导致iostream文件中的内容随源代码文件一起被发送到编译器,实际上iostream文件中的内容将取代程序中的代码行#include ,原始文件没有被修改,而是将源代码文件和iostream文件组合成一个复合文件,编译的下一个阶段将使用该文件-------------懂了!!
#inlcude 编译指令,将程序和外部世界联系起来

2.1.3 头文件名

四种头文件名及解释
C++旧式风格  以.h结尾    iostream.h  C++程序可以使用(没有名空间,直接用cin, cout就行)
C旧式风格    以.h结尾    math.h      C和C++都能用
C++新式风格  没有扩展名  iostream     C++可用,可以使用名空间来简化代码
由C转换来的C++风格  加上前缀c,没有扩展名  cmath  C++可用,**可以使用名空间**

使用名称空间的好处下面说

2.1.4 名称空间
名称空间支持,旨在让我们在编写大型程序时,以及在将多个厂商的代码组合在一起时更容易,有助于组织程序
因为在组织许多程序时,可能多个程序中都使用的相同的函数名,变量名等,这样调用起来就会出现歧义,名称空间的作用,就是让他们各回各家,各找各妈!
但是,比较麻烦的是,在引用某个都使用过的变量名或函数名是,必须注明妈妈是谁(这是谁家孩子),比如Mike::cout << “This is my dear son, baby!”,这个“Mike::”写起来比较麻烦,
这时编译命令using,就发威了 using spacename std 之后,就可以省略妈妈(好像是MIKE爸爸,哈哈)
using spacename std 作用是使得std名称空间中所有的名称都可直接用
还可以只让我们用到的那些名称直接用比如
using std::cin
using str::cout

2.1.5 使用ocut进行C++输出

cout << "Hello 	World!";

<<指明了信息的流动途径
对C++来说,输出是一个流,即程序流出的一系列字符,cout是一个预定义对象,cout对象就表示这种流,其属性是在iostream文件中定义的,既然是对象,就有一个类,cout也不例外,cout的类规定了数据的存储和适用方式。
怎么使用呢?<<在这里就表示插入运算符,这个操作可以把<<右边的信息插入到流中

②运算重载符
<<可以表示插入运算符,也是C总的按位左移运算符,编译器可以根据上下文的指令来判断其含义,C++在这方面的特殊之处是,扩展了运算符重载的概念,允许为用户定义的类型重新定义运算符的含义

③cout << endl 几乎等价于 cout << “\n”
endl就是一个在头文件iostream被定义的特殊符号,且位于名空间std中
区别是(我也不太懂) endl可以将其立即显示在屏幕上,\n不能提供这样的保证

2.2 C++语句

2.2.1 cout与printf
cout相对于printf的聪明之处在于,不需要格式说明符%d,%s等,就可以得到我们想要的输出

2.2.2 cin
cin >> carrots
C++将输入看做流入程序的字符流,iostream文件将cin定义为一个表示这种流的对象,输入时,cin使用>>运算符从输入流中抽取字符。通常,需要在运算符右侧提供一个变量,以接收抽取的信息

2.2.3 类简介
类描述指定了可对类对象执行的所有操作,要对特定的对象执行这些允许的操作,需要给该对象发送一条消息,C++提供了两种发送消息的方式:一种是使用类方法(本质上就是函数调用);另一种方式是重新定义运算符,cin,cout就是采用这种方式,利用重新定义的>> 或<<将“接收消息”和“显示消息”发送给cin/cout

2.3 函数

2.3.1 函数原型和函数定义
①在程序中使用某个函数时,如sqrt(),需要提供函数原型,提供函数原型有两种方式,一是在源代码文件中输入函数原型,而是包含头文件cmath
函数原型只描述函数接口,而定义中包含了函数的代码,C++和C将这两项特性分开了,库文件包含了函数的编译代码,头文件包含了函数原型
即,调用C++库函数,需要用头文件来提供函数原型,在编译器编译程序时,编译器要在库文件中搜索使用的函数才行。
但是自动搜索哪些库文件,会因编译器而异,包含头文件可以提供原型,却不一定会使编译器搜索正确的库文件,所以有可能出现搜索不到的情景,这时就百度好了
②关键字
在不使用cin的程序中,可以把cin作为变量名
③当前比较好的做法是只让需要访问名称空间的函数访问名称空间,即在函数内部开头用using namespace std, 偷懒的做法是在程序开头这样用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值