大家一起进入C++学习的旅途

本文介绍了C++中命名空间的概念、使用规则以及如何避免命名冲突。还详细讲解了C++的输入输出机制,包括cout、cin及其操作符,并讨论了缺省参数的使用和注意事项。
摘要由CSDN通过智能技术生成

1.命名空间

     1.1发生命名冲突
     1.2命名空间
          1.2.1命名空间的定义
           1.2.1命名空间的使用规则

2.C++的输入与输出

3.缺省参数


1.命名空间

1.1发生命名冲突

  在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。

  在c中,同一个作用域下不可以定义同名的变量。rand 是产生随机数的函数,然而我们包括了它的头文件,然后我们还定义了一个全局变量rand他,显然会发生命名冲突。

所以c++就提供了解决办法。

1.2命名空间

  下面这个想必大家在C++代码中常见的语句。  

using namespace std;

  namespace 是c++中的关键字,用于创建命名空间,它是用来避免命名冲突并组织代码的一种机制。通过命名空间,可以将一系列的变量、函数、类等内容封装在其中。

  std 是所有C++库命名空间

 1.2.1命名空间的定义

  定义命名空间需要利用关键字namespace ,后面跟命名空间的名字,然后接一对{ }即可,{ }中即为命名空间的成员,命名空间中不仅可以定义变量还可以定义函数、类型。

1:正常命名空间的定义

2.命名空间可以嵌套使用

 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

 注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

1.2.2命名空间的使用规则

首先,大家先认识一个运算符双冒号::域作用限定符,其作用是通知编译器应从作用域限定符左侧的名字所示的作用域中寻找右侧的那个名字,即指定访问哪个名字空间的哪个成员。

其中b2就是命名空间,x就是该命名空间下的成员

命名空间的三种使用方法:

方法一:

加命名空间名称及作用限定符  

int main()
{
    printf("%d\n", N::a);
    return 0;    
}

方法二:

使用using将命名空间中的某个成员引入(指定命名空间)

using N::b;
int main()
{
    printf("%d\n", N::a);
    printf("%d\n", b);
    return 0;    
}

方法三:

使用using namespace +命名空间名称  引入(慎用)将命名空间全部展开

using namespce N;
int main()
{
    printf("%d\n", N::a);
    printf("%d\n", b);
    Add(10, 20);
    return 0;    
}

2.C++的输入与输出

1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件
以及按命名空间使用方法使用std。
2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< 
iostream >头文件中。
3. <<是流插入运算符,>>是流提取运算符。
4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。
C++的输入输出可以自动识别变量类型。
5. 实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识,
这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。后面我们还有有一个章节更深入的学习IO流用法及原理。

3.缺省参数

  缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。

 运行结果:

缺省参数分为:半缺省和全缺省

 全缺省:函数声明或定义中都指定默认值,不可跳转要依次传递

 结果:

 半缺省:缺省部分参数,缺省值必须从右往左依次给,这样传参就不存在歧义。

结果:

注意:

1. 半缺省参数必须从右往左依次来给出,不能间隔着给
2. 缺省参数能在函数声明和定义中同时出现

3. 缺省值必须是常量或者全局变量
4. C语言不支持(编译器不支持)
 

  有错误和不足之处,欢迎各位大佬来指点。 

  • 30
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值