[C++研发|C++]C++入门基础 1

 前言:从这篇开始,博主将开始自己的C++学习,对C++感兴趣的同学,可以点赞收藏,跟小董我呢🤓一起学习哦!


一、定义命名空间

1、namespace

①定义命名空间,使用关键字namespace,后跟命名空间名字,然后接一对{}即可,{}中即为命名空间的成员,命名空间中可以定义变量/函数/类型等。

②namespace 本质是定义一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,使函数命名不冲突。

③C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找一个变量/函数/类型出处(声明或定义)的逻辑,所以有了域隔离,名字冲突就解决了。局部域和全局域除了会影响编译查找逻辑,还会影响变量的生命周期,命名空间域和类域不影响变量生命周期。

④namespace只能定义在全局,当然他还可以嵌套定义。

项目工程中多文件中定义的同名namespace会认为是一个namespace,不会冲突。

C++标准库都放在一个叫std(standard)的命名空间中。

命名空间的嵌套

二、命名空间使用

编译查找一个变量的声明/定义时,默认只会在局部或者全局查找,不会到命名空间里面去查找。

如下面代码所示。

#include<stdio.h>
namespace bit
{
int a = 0;
int b = 1;
}
int main()
{
// 编译报错:error C2065: “a”: 未声明的标识符
printf("%d\n", a);
return 0;
}

所以程序编译会报错。所以我们要使用命名空间中定义的变量/函数,有三种方法:

1、指定命名空间访问,在做项目时推荐这种方式。(修改上面代码)

// 指定命名空间访问
int main()
{
printf("%d\n", N::a);
return 0;
}

2、using将命名空间中某个成员展开,项目中经常访问的不存在冲突的成员推荐这种方式。

// using将命名空间中某个成员展开
using N::b;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
return 0;
}

3、展开命名空间中全部成员,项目不推荐,冲突风险很大,日常小练习程序可以使用。

// 展开命名空间中全部成员
using namespce N;
int main()
{
printf("%d\n", a);
printf("%d\n", b);
return 0;
}

三、C++输入&输出

 1、<iostream>是Input Output Stream的缩写,是标准的输入、输出流库,定义了标准的输入输出对象。                                                                                                                                                  2、 std::cin是istream类的对象,它主要面对窄字符的标准输入流。                                              3、std::cout 是 ostream 类的对象,它主要⾯向窄字符的标准输出流                                                4、std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。

5、<<是流插入运算符,>>是流提取运算符。(在C语言中用这两个运算符做位运算左移/右移)

6、使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动指定格式,C++的输入输出可以自动识别变量类型(本质是通过函数重载实现的),最重要的是C++的流能更好的支持自定义类型对象的输入输出。

7、cout/cin/endl等都属于C++标准库,C++标准库都放在一个叫std(standard)的命名空间里,所以要通过命名空间的使用方式去用它们,

8、在日常练习中,我们可以使用using namespace std 

四、缺省参数

   1、 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参 则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。(有些地⽅把缺省参数也叫默认参数)
  2、全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。
  3、带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。
  4、函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值