C++取经之路(其一)——namespace(命名空间),cout,cin(输入输出流),缺省参数。

目录

目录:

前言:

namespace(命名空间):

命名空间可以嵌套使用如:

相同的命名空间

cout cin输入输出

std命名空间的使用惯例:

缺省参数:

缺省类型:


前言:

        最近开始学习C++了,所以新开一个板块来记录,因为知道革命一路上荆棘丛生,所以取名为取经之路。

namespace(命名空间):

首先我们要知道::是域作用符号默认访问全局变量。

所谓命名空间,我称之为保护自己的财产,这只是一种形象的比喻。

举个例子:张三今天赚了500块,老板发的现金,然后他将钱存入了银行卡。只有得到这张银行卡才能使用里的钱。而在代码中命名空间就相当于这张银行卡,只有有了这个命名空间才能使用里面的变量,含数等等。

我们看个代码

#include<iostream>
using std::cout;
using std::endl;


namespace people1 {    //创建一个命名空间
	int age = 20;
	char name[] = { "张三" };
}


int main()
{                                     //我们使用一个命名空间格式是:"空间名"::"要用的数据"
	cout << "姓名:" << people1::name << '\n' << "年龄" << people1::age << std::endl;
	return 0;
}

运行代码:

如果我们不想写前面的空间,名我们可以这样做

#include<iostream>
using std::cout;
using std::endl;



namespace people1 {
	int age = 20;
	char name[] = { "张三" };
}


using namespace people1;声明命名空间

int main()
{
	cout << "姓名:" << name << '\n' << "年龄" << age << std::endl;
	return 0;
}

这样就是将空间展开全部的变量都可以用了,类似于全局变量。

但是我们来看这个例子

如果我们这样做的化就会使得b不确定。

所以我们一般不这么做

我们一般会采用1.部分展开。2.就干脆不展开每次都用域作用符来声明。

这是部分展开的格式。

命名空间可以嵌套使用如:


namespace N1
{
    int a;
    int b;
    int Add(int left, int right)
    {
    return left + right;
    }
        namespace N2
      {
        int c;
        int d;
        int Sub(int left, int right)
        {
        return left - right;
        }
    }
}

相同的命名空间

最后: 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
 ps:一个工程中的test.h和上面test.cpp中两个N1会被合并成一个

cout cin输入输出:

1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件
以及按命名空间使用方法使用std。

2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含<
iostream >头文件中。

3. <<是流插入运算符,>>是流提取运算符。

这相当于C语言的输入输出,我个人认为c++的输出不如C语言,在控制小数精度上就非常麻烦。但输入确实爽了不少,毕竟还不弹出vs特有的scanf报错。

std命名空间的使用惯例:

std是C++标准库的命名空间,如何展开std使用更合理呢?
1. 在日常练习中,建议直接using namespace std即可,这样就很方便。


2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对
象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模
大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 +
using std::cout展开常用的库对象/类型等方式。

我在这举个例子就行了,剩下自己研究。

缺省参数:

这是C语言没有的

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

举个例子就是这样:

void Func(int a = 10, int b = 20, int c = 30)
{
    cout<<"a = "<<a<<endl;
    cout<<"b = "<<b<<endl;
    cout<<"c = "<<c<<endl;
}

简单来说就是,在创建的时候添加一个参数,没有传入参数就自动用添加的

缺省类型:

全缺省

void Func(int a = 10, int b = 20, int c = 30)
{
    cout<<"a = "<<a<<endl;
    cout<<"b = "<<b<<endl;
    cout<<"c = "<<c<<endl;
}

半缺省

void Func(int a , int b = 20, int c = 30)//注意a没赋值
{
    cout<<"a = "<<a<<endl;
    cout<<"b = "<<b<<endl;
    cout<<"c = "<<c<<endl;
}

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

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

  • 29
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值