C++入门(上)

目录

1.C++

     1.1.什么是C++

        1.2.C++的重要程度

2.C++入门

        2.1.关键字

        2.2.命名空间

        2.2.1.C语言的命名弊端

        2.2.2.命名空间以作用限定符

        2.2.3.命名空间展开

        2.2.4.命名空间合并与嵌套

                2.3.C++输入&输出

3.结语


1.C++

     1.1.什么是C++

        C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机 界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言 应运而生。 1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一 种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而 产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的 程序设计,还可以进行面向对象的程序设计。(加粗的字也就是C++相比于C最明显的区别)

        1.2.C++的重要程度

        下图数据来自TIOBE编程语言社区2021年12月最新的排行榜,在30多年的发展中,C/C++几乎一 致稳居前5。

         由此可见,学习C++是非常有必要的。而且由于C++是面向对象编程,在后端开发中使用C++可以在一定程度上减少代码量。接下来,我们就一起步入C++的学习。

2.C++入门

        2.1.关键字

        C++的关键字有63个,相较于C语言的32个增加了31个,在本篇文章中不做详细介绍,下图是C++关键字的总览:

        2.2.命名空间

         在正式讲命名空间前,先提出一个疑问,就是大家或许在写C++或者看C++的代码时经常看到下图这两个语句:

这里我提出两个疑问:

        ①为什么这个头文件不像C语言一样以.h结尾?

        ②为什么要写下面这句话、这句话有什么用?

        2.2.1.C语言的命名弊端

在解释这两个问题之前,我先讲一下C语言在定义变量和函数前的弊端:

        在C语言中这个函数和这个变量是不允许同时存在的,因为这个变量和函数重名了。这个弊端在平时做题的时候显示的不太明显,因为用到的函数和变量数量比较少。但是如果是在一个项目中,这个弊端就显现出来了:如果两个工程文件中都出现了max函数,那么在C语言中至少得有一个项目中的max要改名,这在工程中的工作量是巨大的,为了避免这个问题,我们的祖师爷在C++引入了命名空间。如下图所示:

        2.2.2.命名空间以作用限定符

         这里把max函数放到了Max命名空间中,我们发现不冲突了。但是为什么呢?因为编译器在搜索的时候先搜索局部变量再搜索全局变量,默认是不搜索在命名空间的变量和函数的。所以我们像下图一样调用也是行不通的。

         那么我们该怎么调用这个函数呢?C++用::作为作用限定符。我们可以如下图一样调用:

               2.2.3.命名空间展开

        这句话就是告诉编译器,去Max命名空间中找这个函数,所以调用成功了。但是如果我们下面要调用这个函数几千次,我们要一次次写这个么,这样就显得太麻烦了。如果在没有冲突的情况下,我们可以讲命名空间展开:

        

        展开了命名空间,编译器就可以去这个命名空间里寻找函数或者变量了。那么我们的max函数也就可以正常使用了。

        当然这里可以成功编译,我删除了上面的int max=0;的语句,也就是说展开命名空间,可能会产生冲突的变量名和函数,展开需谨慎啊!当然这个问题也是有方法去缓解的:

         这里我重新创建了一个命名空间,如上图所示,这里只部分展开了calo命名空间的Max函数,编译器是可以找到Max并正常使用的,但是这个Min函数就不可以正常使用了,因为它没有被展开也没有命名空间限定符,所以它不能使用。

        2.2.4.命名空间合并与嵌套

        上面我们提到命名空间展开,那么命名空间名字一样,是不是就一起展开了,用作用限定符寻找,命名空间名字一样,是不是就到全部同名的命名空间里寻找了。所以,我们认为命名空间是可以合并的,如下图的两个命名空间是可以合并的:

         所以就可以两个不同的程序员写同一个命名空间,所以这里就引出了另一个问题:如果两个函数在命名空间内冲突了,那么怎么办呢?

        解决办法就是命名空间嵌套如下图所示:

        

 使用方法与最外层的命名空间类似,可以展开也可以用限定符访问:

        

        到这里我们也就可以解释我们开头抛出的问题了。①为什么不用.h结尾,是因为库中的函数全部写进了命名空间std内。②using namespace std; 意思就是展开std命名空间。

        2.3.C++输入&输出

        如同我们学习C语言一样,我们的C++也想向这个世界问好。我们C语言用的printf,那我们的C++呢?这里直接上代码:

#include<iostream>
using namespace std;

int main()
{
    cout << "hello world"<< endl ;
    return 0;
}

         这里的cout为什么可以实现打印的功能我们先不解释,这里的endl可以理解为C语言中的'\n'

输入语句:

#include<iostream>
using namespace std;

int main()
{
    int a=0;
    cin >> a;
    cout << a << endl;
    return 0;
}

        这里的cin就相当于C语言中的scanf,怎么实现的现在也不细说(这里的>>是流提取运算符,<<是流插入运算符,不是C语言中的位运算符)。 在上面的代码中我们可以看到,C++的输入输出不需要输入数据的类型,C++可以自己匹配进行输入输出,这对我们程序员来说是很友好的,在一定程度上也便利了我们程序员写代码。

         3.结语

        今天我们入门了C++也正式开启了C++的学习,在未来的学习中,我将分享更多的学习经验,写的不好的地方欢迎大家一起讨论哈。

        

        

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值