C++入门 (一)

1. namespace

namespace  关键字 命名空间

意义:

        1.避免在多个代码片段(如不同人编写的代码或调用的已有代码片段)同时使用时,由于不同代码间变量名相同而造成的冲突。

         2.可以帮助我们区分不同库中相同名称的函数、类、变量等,通过建立互相分隔的作用域,把一些全局实体分隔开来,以免产生名字冲突。此外,命名空间也是一种机制,可以将系统中的大量类库有序地组织起来,使得类更容易被使用和管理。

方式一 指定访问:

查找顺序

        若要用变量,函数等... ,我们查找的顺序如何?  我们形象比喻一下,

        1.在当前局部域找:自留地

        2.在全局域找:村子野地

        3.在命名空间域找(前提要允许找):别人家的地(经过允许:ns::a)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

//避免命名冲突
//命名空间域
namespace ns
{
	//变量
	int a = 1000;
	//函数
	int ADD(int x, int y)
	{
		return x + y;
	}
	//结构体
	struct Node
	{
		struct Node* next;
		int val;
	};
}

namespace nc
{
	//变量
	int a = 567;
	//函数
	int ADD(int x, int y)
	{
		return (x + y) * 10;
	}
}

int a = 100;

int main()
{
	int a = 10;

	printf("%d\n", a);
	//::域作用限定符
	// ::的左边为空则为全局变量
	printf("%d\n", ::a);
	printf("%d\n", ns::a);
	printf("%d\n", nc::a);
	printf("Hello world\n");

	int ret1 = ns::ADD(5, 6);
	int ret2 = nc::ADD(5, 6);
	printf("%d\n", ret1);
	printf("%d\n", ret2);

	//结构体类型
	struct ns::Node node1;
}

结果

命名空间也可以嵌套:

结果:

方式二 展开命名空间:

通俗易懂点:随便用,公共的

使用格式:using namespace + 名字;

查找顺序 1.在当前局部域找:自留地

                2.在全局域找:村子野地                     

                3.与2. 统一等级   :在命名空间域找(允许找,公共的):别人家的地(菜地里的菜谁                                                                                                                 想要谁来采摘)

注意:全局的和命名空间展开的  有同名的变量名,函数名等....      没问题;

           两个命名空间的展开  前提:有同名的变量名 函数名等....  错误,编译器不知道使用哪个 。

           命名空间展开用起来很方便,也很致命, 所以,不要随意展开命名空间    (在日常使用,方便)

方式三 指定展开命名空间域的某一个:

通俗一点:比如是王大爷家的地,地里有很多水果,他只让你摘苹果,其他不开放

使用格式:using + "命名空间域的名字" + "里面的变量,函数等...."

2.目前学了几个域?

1.局部域

2.全局域

3.命名空间域

解释:不同的域可以定义同名的变量,函数,类型;

        1 和 2 影响生命周期,3不影响; 

        3属于全局变量里面的(只是在全局域里面括起来一块自己的空间)

3.流插入/流提取

注意:1.C++ 兼容 C  ,cout ,cin  / printf  ,scanf   可以混用

           2.目前,像 如何去控制精度等等...... C++ 有点麻烦,C++有自己相关的函数,就可以用 C 

       

4.缺省参数

缺省参数的分类:

1.全缺省

2.半缺省(缺省一部分,并且只能从左往右缺省

注意缺省参数不能在函数声明和定义中同时出现,规定缺省参数在声明给;

           缺省值必须是常量或者全局变量:

          C语言不支持(编译器不支持)。

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值