【C++成长系列】第一个C++程序与命名空间

100 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第36天,点击查看活动详情

✨欢迎关注🖱点赞🎀收藏⭐留言✒

🔮本文由京与旧铺原创,csdn首发!

😘系列专栏:C++学习

💻首发时间:🎞2022年12月31日🎠

🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

🎧作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲


1.什么是C++?

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。

1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。

总的来说,C++的诞生就是为了弥补C的缺陷,虽然C++仍然还存在缺陷,毕竟C的坑实在是太多了。

C++是一门面向对象语言,它是基于C语言而产生的,所以C++是兼容C的,C语言不支持面向对象,是一门面向过程的语言。

关于C++的发展史啥的就不说了吧,毕竟网上有很多,下面我们直接来介绍C++的语法。

2.了解C++的关键字

C++总计有63个关键字,相比于C语言还是多了不少,C语言只有32个,大概差不多就下面这些,看一眼,混个眼熟。 1

3.命名空间

在C语言当中,全局共享标识符,可能会造成命名冲突的问题,C++为了解决此问题提出了命名空间的概念,使用命名空间可以将所定义的函数名和变量名限制在一个空间当中,或者说限制在一个域当中,只有在对应命名空间的域才能访问到对应的变量或方法。

C++库中的变量与函数就定义在一个叫做std的命名空间当中,这也就解释了很多C++程序开头都有using namespace std这样一个语句,它的作用就是将std命名空间的变量与函数展开到全局作用域当中,这种做法其实不推荐,毕竟你将库里面的变量与函数展开到全局作用域,其实回到了C的这个起点,因为C本来就只有一个全局域,用来存放函数与变量。

下面来介绍命名空间的使用,首先从如何定义命名空间说起吧!

命名空间的定义:

namespace 命名空间名 {
	//定义函数或变量
}

并且命名空间是支持嵌套的:

namespace 命名空间名 {
	//变量函数等
	namespace 命名空间名 {
		//...
	}
}

例如:

namespace test {
	int scanf = 10;
	int printf = 20;
	int c = 30;
}

知道如何去定义命名空间,下一步就是如何访问到命名空间中的函数或者变量,语法格式如下:

命名空间名::变量名/函数名
命名空间名::嵌套的命名空间名::变量名/函数名

栗子:

namespace test {
	int a = 10;
	int b = 20;
	int c = 30;
}


int main()
{
	printf("%d\n", test::a);
	printf("%d\n", test::b);
	printf("%d\n", test::c);
	return 0;
}

2

除了我们使用特定的语法去访问它,我们还可以将命名空间中的变量展开到全局变量当中,然后就可以直接访问到了。

命名空间展开语法,展开的时候,需要写在定义命名空间的后面:

using namespace 命名空间名;

栗子:

namespace test {
	int a = 10;
	int b = 20;
	int c = 30;
}
using namespace test;

int main()
{
	printf("%d\n", a);
	printf("%d\n", b);
	printf("%d\n", c);
	return 0;
}

3

在C++库中,库里面的变量和函数都定义在std的命名空间当中,因此如果我们想要使用C++的库函数和变量,我们需要使用命名空间访问的规则去访问或者展开命名空间去访问。

如将std命名空间展开:

using namespace std;

这样我们就可以直接使用C++中的库函数,如cout cin(对应C中的printfscanf)等。

如果没有展开然后直接使用库函数会报错: 6 展开std命名空间后: 7 其实这种做法并不推荐,推荐使用命名空间的访问或者部分展开:

部分展开,如只展开cout函数

using std::cout;

8 使用命名空间语法访问:

std::cout << a << "  " << b << "  " << c;

9