当前位置: 首页 > news >正文

搭建wordpress环境搭建北京seo分析

搭建wordpress环境搭建,北京seo分析,临漳网站建设,杨浦专业网站建设文章目录 前言1. namespace 的价值2. namespace 的定义3. 命名空间的本质4. 嵌套的命名空间5. 命名空间的使用6. using 指令7. 补充结语 前言 假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外&am…

在这里插入图片描述

文章目录

  • 前言
  • 1. namespace 的价值
  • 2. namespace 的定义
  • 3. 命名空间的本质
  • 4. 嵌套的命名空间
  • 5. 命名空间的使用
  • 6. using 指令
  • 7. 补充
  • 结语

前言

假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。

同样的情况也出现在 C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。

我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名

在这里插入图片描述

1. namespace 的价值

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

c语言项目类似下面程序这样的命名冲突是普遍存在的问题,C++引入了命名空间这个概念,就是专门用于解决这种问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。

#include <stdio.h>
#include <stdlib.h>
int rand = 10;
int main()
{// 编译报错:error C2365: “rand”: 重定义;以前的定义是“函数”printf("%d\n", rand);return 0;
}

2. namespace 的定义

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

namespace namespace_name {// 代码声明
}

为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示:

name::code;  // code 可以是变量或函数

这里面的::作用域限定符

让我们来看看命名空间如何为变量或函数等实体定义范围:

#include <iostream>
using namespace std;// 第一个命名空间
namespace first_space{void func(){cout << "Inside first_space" << endl;}
}
// 第二个命名空间
namespace second_space{void func(){cout << "Inside second_space" << endl;}
}
int main ()
{// 调用第一个命名空间中的函数first_space::func();// 调用第二个命名空间中的函数second_space::func(); return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Inside first_space
Inside second_space

3. 命名空间的本质

  • namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不在冲突了。
#include <stdio.h>
#include <stdlib.h>
// 1. 一般的命名空间定义
// xhh是命名空间的名字,一般开发中是用项目名字做命名空间名。
namespace xhh
{// 命名空间中可以定义变量/函数/类型int rand = 10;int Add(int left, int right){return left + right;}struct Node{struct Node* next;int val;};
}
int main()
{// 这⾥默认是访问的是全局的rand函数指针printf("%p\n", rand);// 这⾥指定xhh命名空间中的randprintf("%d\n", xhh::rand);return 0;
}

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

4. 嵌套的命名空间

namespace 只能定义在全局,当然还可以嵌套定义,示例如下。

//2. 命名空间可以嵌套
namespace bit
{namespace pig{int rand = 1;int Add(int left, int right){return left + right;}}namespace bird{int rand = 2;int Add(int left, int right){return (left + right) * 10;}}
}
int main()
{printf("%d\n", bit::pig::rand);printf("%d\n", bit::bird::rand);printf("%d\n", bit::pig::Add(1, 2));printf("%d\n", bit::bird::Add(1, 2));return 0;
}

5. 命名空间的使用

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

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

所以声明了命名空间之后,如果在命名空间外部访问命名空间内部的成员,需要在成员名前面加上 命名空间::,示例如下。

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

6. using 指令

有没有什么比较方便的方法能让我们直接通过成员名访问命名空间内的成员呢?答案是肯定的。我们可以使用 using 指令。

using 指令有如下两种形式:

  1. using 命名空间::成员名;

这条指令可以让我们省略某个成员名前的命名空间,直接通过成员名访问成员,相当于将这个成员导入了当前的作用域。

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

这条指令可以直接通过成员名访问命名空间中的任何成员,相当于将这个命名空间的所有成员导入了当前的作用域。

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

因此,如果执行了 using namespace N;,就会将 N 中的所有名字都会引入到全局命名空间当中。

📌注意

  • 指定命名空间访问。项目中推荐这种方式。

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

  • 展开命名空间中全部成员,由于这种方式会将此命名空间中的所有名字引入,因此如果声明了与其中重名的变量或函数,就可能会因为命名冲突而导致编译错误。所以说项目中不推荐,冲突风险很大,日常小练习程序为了方便推荐使用。

7. 补充

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

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

结语

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下。

也可以点点关注,避免以后找不到我哦!

Crossoads主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的动力!

在这里插入图片描述

http://www.dt0577.cn/news/1566.html

相关文章:

  • 网站建设及服务合同网站怎么搭建
  • 网络公司给别人做网站的cms是买的授权么网推拉新app推广接单平台
  • 西安集团网站建设下载关键词推广软件
  • 音乐网站建站软文发布网站
  • 柳州学校网站建设西安网站建设方案优化
  • 手机网站开发费用网络营销专业就业前景
  • 厦门企业网站建设补贴手机上可以创建网站吗
  • 重庆渝能建设集团有限公司网站关键词整站优化公司
  • discuz做网站赚钱经历培训如何优化网站
  • 房管局网站做房查360信息流广告平台
  • 漳州最具口碑的网站建设关键词com
  • 微商城运营方案成都seo优化
  • 城管网站内容建设方案搜狗竞价推广效果怎么样
  • 大连凯杰建设有限公司网站seo优化是什么
  • B2C网站的后台管理功能包括免费刷粉网站推广免费
  • 网站建设注意网站排名掉了怎么恢复
  • 朝阳做网站的公司seo价格查询公司
  • wordpress更改网站内容营销策划咨询机构
  • 新疆建设工程综合信息网官网郑州seo教程
  • 常用的seo网站优化排名网络推广团队
  • 外发加工网站淘宝营销推广方案
  • 做网站的升级人百度首页 百度一下
  • 宁波网站推广运营公司搜索引擎技术基础
  • 高职两学一做专题网站刷关键词怎么刷
  • 成都建工官网seo零基础教学
  • 北京公司网站制作公司短视频怎么赚钱
  • 哈尔滨网站建设制作价格厦门人才网手机版
  • 研发项目流程八个阶段seo优化或网站编辑
  • 运城网站建设公司有多少发布外链的平台有哪些
  • 职教集团网站建设seo网络营销外包