C++入门基础-1

简介: C++入门基础

1 命名空间

1.1 命名空间的引入

在C语言中,我们可能会遇到命名冲突问题,例子如下:


当我们没有使用stdlib库时,代码是可以正常运行的,而使用stdlib库时,我们的程序使用不了。原因就是我们所定义的变量名字与stdlib中有个rand函数名字冲突了,导致代码不可以正常运行,所以C++中就引入命名空间这一概念,来解决命名冲突。


1.2 命名空间的使用

我们通常使用namespace关键字来实现,命名空间就是起着隔离作用域,但是里面的内容是属于全局变量内容(命名空间就是类似的加了一堵墙),我们通常要使用域作用符(::)来进行访问(把墙打开)。通俗点来讲就是可以将库里面和自己命名所冲突的分隔开,不会出现冲突,让代码可以继续运行。

namespace 命名空间的名字
{
  ......(可以包含变量,结构体等内容,甚至还可以继续嵌套命名空间)
}

使用命名空间就可以解决上述问题:


需要注意的是相同名字的命名空间是会合并在一起的,如果我们在写声明与定义的时候,只需要用相同的名字的命名空间涵盖起来就可以了


1.3 命名空间的嵌套

例子如下:

但是不建议套娃太多层!


1.4 命名空间的展开

在C++中,我们使用iostream这个输入输出库,不用像C语言一样头文件带.h。C++标准库的内容全在std这个命名空间里面,我们得利用std进行访问,利用using关键字进行展开命名空间(类似于没有那堵墙了)。


全部展开其实就又会出现我们之前讲过的命名冲突的问题了,所以我们一般将常用的函数或者变量进行命名空间局部的展开就可以!

2 C++中的输入与输出

输出我们使用的是cout关键字,输入使用cin关键字


3 缺省参数

3.1 缺省参数的概念

是指在函数声明以及定义的时候,在参数列表中给定一个缺省值,如果实参有数据传过来,就以实参的数据为准,否则默认缺省值。


3.2 缺省参数的分类

3.2.1 全缺省参数

参数列表中的每一个都有缺省值

3.2.2 半缺省参数


注意:

1 半缺省参数必须从右往左给定,并且不可以间隔
2 缺省参数不可以在函数的声明与定义中同时出现
3 缺省值必须是常量或者是全局变量


4 函数的重载

是指函数名相同,但是参数列表个数,类型不同。与返回值无关!


C语言是不支持重载的,那是因为C语言在编译链接的时候是根据函数名直接去寻找地址的,所以它就不支持函数名同名的。而C++底层在编译链接的时候对函数名进行了特别的处理,加上了一些内容,这样就可以找到函数名相同,但是参数不同的那个所需要的函数了!具体的解释可以参考这篇文章:C++如何支持重载

5 引用

引用的本质:就是给变量取别名,和变量用的是同一块内存空间。例子如下:b就是一个引用


内存空间示意图如下:

5.1 引用的特性

1 引用必须进行初始化
2 一个变量可以有多个引用
3 引用一旦确定一个实体,是不可以进行改变的(所以在C++中,对于链表的操作,我们依旧采用指针的方式)


C++入门基础-2

https://developer.aliyun.com/article/1504245


目录
相关文章
|
2月前
|
编译器 C++
C++入门12——详解多态1
C++入门12——详解多态1
47 2
C++入门12——详解多态1
|
2月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
39 3
|
2月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
51 2
|
2月前
|
C++
C++入门13——详解多态2
C++入门13——详解多态2
89 1
|
2月前
|
程序员 C语言 C++
C++入门5——C/C++动态内存管理(new与delete)
C++入门5——C/C++动态内存管理(new与delete)
92 1
|
2月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
30 1
|
2月前
|
存储 编译器 C++
C++入门3——类与对象2-1(类的6个默认成员函数)
C++入门3——类与对象2-1(类的6个默认成员函数)
51 1
|
2月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
70 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
2月前
|
存储 安全 编译器
【C++打怪之路Lv1】-- 入门二级
【C++打怪之路Lv1】-- 入门二级
30 0
|
2月前
|
自然语言处理 编译器 C语言
【C++打怪之路Lv1】-- C++开篇(入门)
【C++打怪之路Lv1】-- C++开篇(入门)
39 0