前言
c语言在初学的时候可能大家上手比较简单,但是C++上手需要具备一定的语法功底,下面我们一起来学习C++入门需要的一些东西。
一、什么是命名空间
1.命名空间
根据我自己的理解来看,命名空间就像是一个库,里面有着变量,结构体,函数等等。
因为在c语言中一些被定义的函数名就不能被使用,像下面的rand一样(包含在stdlib.h的头文件中),
所以C++就想通过命名空间来解决这个问题,我们就可以在命名空间定义一个rand变量,
然后通过引入命名空间的方法来解决(方法下文会讲).
但是当你创建一个命名空间时,C++中有一些特定的规则我们需要掌握。
1.命名空间空间可以嵌套定义(就是可以在一个工程中定义多个命名空间)
2.在同一个工程中定义多个名字相同的命名空间,编译器最后会合成在一个命名空间中
下面来讲讲命名空间的使用问题
通过这个我们可以看到命名空间中的变量不能直接使用,那我们应该如何正确使用命名空间中的东西呢?
一共有三种方式
1.加命名空间名称及作用域限定符
2.使用using将命名空间中某个成员引入
3.使用using namespace 命名空间名称 引入
第三种方法和第二种不同在第三种方法相当于引用了整个命名空间,而第二种方法相当于只引用了命名空间中的a;
2.C++输入和输出
我还记得刚刚学c语言的时候,我们老师就跟我们说,首先叫你们用c语言问候一下这个美好的世界
接下来我们首先用C++来问候我们美好的世界.
这里的std是C++标准库的命名空间,C++将标准库的定义都放在这里。
这里的<iostream>我们就简单地把它认为是一种流就可以了
cout是标准输出对象(控制台)和cin是标准输入对象,必须要包含<iostream>头文件
他们有一个特别好的地方就是能够自动识别类型,如果是c语言的话,我们得用%s来输出hello world
但是这里就能自动识别类型输出。
<<是流插入运算符,>>是流提取运算符
后面的endl就相当于c语言中的’\n',换行符
3.缺省参数
![](https://i-blog.csdnimg.cn/blog_migrate/5263d4459e38ec72d42eee9b7647fbdb.png)
就比如说这个题,根据缺省参数的定义,大家能不能算出k的值?
我们只传了一个参数1,那么这个1就会被x接收,那么y没有接收到值就会默认为缺省值5
所以k的值最后应该是6.
缺省参数又分为全缺省参数和半缺省参数
全缺省参数的定义是每个参数都有缺省值
半缺省参数的定义是不是每个参数都有缺省值(并不是只有一半参数有缺省值)
4.函数重载
创建C++的这个大佬就觉得啊,c语言在这个函数名太不方便了,不能同时拥有两个相同的函数名
所以就创建了这个函数重载。
![](https://i-blog.csdnimg.cn/blog_migrate/10805f869537314c507e243a90a27a7f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b419f9bdbe4c92feb62d6cffaaebe55b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/12494df44fc8d8017f66f421614ede68.png)
5.引用
我们在学习c语言的时候,是不是觉得指针那块特别复杂,比如说在你想改变1级指针的指向时,我们就必须
使用2级指针,在某些情况下觉得太复杂了一点,这时我们就可以用到引用。
我们可以看到a和k的地址是一样的,指向的是同一块空间,我们的&放在类型的后面就可以起到引用的作用
引用不是定义一个新变量,而是给已有的变量取一个别名
引用有以下几个特性:
引用类型和引用实体必须是同种类型的。
引用在定义时必须初始化。
一个变量可以有多个引用。
引用一旦引用一个实体就不能改变。
当运用与常引用时
当引用运用到函数当中时
我们来看这张图片,我们将i作为参数传过去,但是接受的是一个引用,就相当与给i起了个别名,本质上应该说是x和i指向同一块地址
所以x改变,i自然就改变了
当引用做返回值时
我们再来分析,static是表示这个变量创建在静态区,所以即使这个函数调用完毕后也不会销毁
我们返回的是i,但是返回类型是int&,就相当与给i起了个别名,然后接收的k也是int&类型,就
相当与给i的别名起了个别名,我们之前说过一个变量可以有多个别名。
传值和传引用的效率比较
我们可以看到,两个还是存在差异的,至于为什么会存在差异呢,是因为我们在传值的时候
其实传的是一份临时拷贝,首先你得把这个值拷贝一份,然后再传过去,但是引用就不一样,直接找到你传的值的地址,
所以就能迅速传过去。
引用和指针的不同点:
总结
以上就是一部分C++的入门知识,如有不对,请大家多多指正,后续会继续更新C++入门知识