开启掘金成长之旅!这是我参与「掘金日新计划 · 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个,大概差不多就下面这些,看一眼,混个眼熟。
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;
}
除了我们使用特定的语法去访问它,我们还可以将命名空间中的变量展开到全局变量当中,然后就可以直接访问到了。
命名空间展开语法,展开的时候,需要写在定义命名空间的后面:
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;
}
在C++库中,库里面的变量和函数都定义在std的命名空间当中,因此如果我们想要使用C++的库函数和变量,我们需要使用命名空间访问的规则去访问或者展开命名空间去访问。
如将std命名空间展开:
using namespace std;
这样我们就可以直接使用C++中的库函数,如cout cin(对应C中的printf和scanf)等。
如果没有展开然后直接使用库函数会报错:
展开
std命名空间后:
其实这种做法并不推荐,推荐使用命名空间的访问或者部分展开:
部分展开,如只展开cout函数
using std::cout;
使用命名空间语法访问:
std::cout << a << " " << b << " " << c;