什么是C++?
C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。C++有很多版本,我们这里讲的是C++98
C++98
C++标准第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和美国标准化协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)
asm do if return try continue
auto double inline short typedef for
bool dynamic_cast int signed typeid public
break else long sizeof typename throw
case enum mutable static union wchar_t
catch explicit namespace static_cast unsigned default
char export new struct using friend
class extern operator switch virtual register
const false private template void true
const_cast float protected this volatile while
delete goto reinterpret_cast
我们可以看到C++有许多的关键字,如果你学习过C语言,那么你就可以在里面看到许多熟悉的身影。C++是在C语言的基础上衍生出来的一门计算机语言,C语言有32个关键字,C++有63个关键字。
相信很多学过C++的同学都知道这段代码
#include
using namespace std;
int main()
{
return 0;
}
很多人在学习C++的时候,只知道要这么写,却不知道为什么要这么写,这么写有什么意义,都以为这是C++的语法要求,事实上并不是如此。
下面,让我们来重新认识一下这段代码吧!
首先,让我来介绍一下这段代码中的namespace
namespace其实是C++中的一个关键字,它的作用是用来命名空间的,被它命名的空间叫做命名空间域。它是用来解决C语言中一些缺陷的。
例如,命名冲突。
我们来看这一段代码
#include
int main()
{
int scanf=10; //注scanf并不是C语言中的关键字,它只是C语言标准库函数里的一个函数的名字。
scanf("%d", &scanf);
return 0;
}
这段代码在C语言中是不能编译过去的,并且在C语言中无法解决这样的问题,而在C++中,我们可以处理这样的问题,
实际上,C++中的很多语法就是用来解决C语言中的缺陷的
要想解决这样的问题,我们就需要用到namespace(命名空间)
namespace语法格式
namespace关键字+命名空间的名字+{}
#include
namespace n1 //我们用namespace命名了一个空间叫n1,这个整体叫做命名空间域
{
int scanf=10;
}
//下面我们就可以来使用这个命名空间
int main()
{
//C++中支持C语言的语法,C++中的#include,相当于C语言中的#include
//所以C语言中的语法在C++中都可以使用
//为了区分C++和C语言的一些区别,C++的头文件都不带 .h
scanf("%d", &n1::scanf); //这里用命名空间的名字+ :: 来表示这个scanf是命名空间中的scanf
//这样我们就可以正常使用了
return 0;
}
了解了这些,我们再来回到之前的问题
using namespace std; 是什么意思呢?
std其实是C++的标准库,和C语言的标准库一样,它里面定义了很多C++的语法内容,这句话的意思就是使用std标准库。相当于我们把std标准库里的东西都
拿出来,引入到文件中,这样我们就可以直接使用std标准库里面的东西。
关于namespace命名空间, 我们还有一些内容要补充。
1.命名空间内可以定义变量,也可以定义函数
2.命名空间可以嵌套使用
3.同一工程内可以定义相同的命名空间的名字,它们在使用的时候会被整合到一起(相同的命名空间内不可以定义相同名字的变量或函数)
#include
namespace n1
{
int a=10;
int b=20;
int Add(int x, int y)
{
return x+y;
}
namespace n2
{
int c=30;
}
}
using n1::b; //在这里引入后,使用b时可以不加 n1::
using namespace n1;
int main()
{
printf("%d\n", n1::a);
printf("%d\n", b);
printf("%d\n", Add(2,3));
printf("%d\n", n2::c);
return 0;
}
关于命名空间的使用,有三种方法
1.加命名空间名称及作用域限定符
n1::
2.使用using将命名空间中成员引入
using n1::a;
3.使用using namespace 命名空间名称引入
using namespace n1;
当我们学习一个新语言的时候,总要写一个代码,向世界问好。下面我们用C++来实现一下。
#include
using namespace std;
int main()
{
cout<<"Hello World!"<<endl;
return 0;
}
cout标准输出,使用cout必须引头文件和命名空间std
cout的规范书写方式是这样的 std::cout<<"Hello World!"<