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

广州手机建站模板互联网营销有哪些方式

广州手机建站模板,互联网营销有哪些方式,苏州建设交通职业学校,wordpress 菜单 导航1.命名空间的价值 在C/C中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace…

1.命名空间的价值

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

举个例子:

#include<stdio.h>int rand = 10;int main()
{int rand = 1;printf("%d\n", rand);return 0;
}

这是一个正确的C语言代码(但并不推荐这种写法),局部变量rand覆盖了全局变量的数值,能够正确运行。但是只要加入一个头文件,就会使程序运行错误,看:
在这里插入图片描述
报错信息显示,rand被重定义了,因为标准库中已经有一个名为rand()的函数(用于生成随机数)。为了避免这种情况,C++语言引进了namespace关键字。

2. namespace定义

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

namespace hhy
{int rand = 1;int Add(int x, int y){return x + y;}struct Stu{int age;char name[10];};
}

这是一个简单的命名空间,定义了一个变量,函数和结构体。

• namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不在冲突了。

#include<stdio.h>
//#include<stdlib.h>int rand = 10;namespace hhy
{int rand = 1;int Add(int x, int y){return x + y;}struct Stu{int age;char name[10];};
}int main()
{printf("%d\n", hhy::rand);//在hhy命名空间寻找rand变量printf("%d\n", ::rand);//在全局变量中寻找rand变量return 0;
}

在 C 和 C++ 中,:: 是作用域解析运算符,用于访问全局作用域或特定命名空间中的标识符。
在这里插入图片描述
注意:这里将#include<stdlib.h>给注释了,不然第二次打印会报错,跟rand函数冲突,但第一次打印可以正常运行,大家可以去试一试。

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

#include <iostream>
using namespace std;// 全局作用域:变量lifeGlobal的生命周期从程序启动到结束
int lifeGlobal = 1;// 命名空间作用域:变量lifeNS的生命周期同样贯穿程序全程
namespace MyNS {int lifeNS = 2;
}// 类作用域:静态成员变量lifeStatic属于类本身,而非类的实例
class MyClass {
public:static int lifeStatic;  // 声明静态成员变量
};
// 定义并初始化静态成员变量(在全局/静态存储区分配内存)
int MyClass::lifeStatic = 3;// 测试函数:展示局部变量的生命周期
void testScopes() {// 局部作用域:变量lifeLocal的生命周期从函数调用开始,到函数返回时结束int lifeLocal = 4;cout << "Inside function: " << lifeLocal << endl;  // 输出局部变量值// lifeLocal在此处销毁
}int main() {// 访问全局变量(直接使用变量名)cout << "Global: " << lifeGlobal << endl;// 访问命名空间变量(通过命名空间限定符)cout << "Namespace: " << MyNS::lifeNS << endl;// 访问类静态成员(通过类名限定符)cout << "Class static: " << MyClass::lifeStatic << endl;// 调用函数,创建并销毁局部变量testScopes();// 函数调用结束后:cout << "After function call:" << endl;// 全局变量、命名空间变量和类静态成员仍然有效cout << "Global: " << lifeGlobal << endl;cout << "Namespace: " << MyNS::lifeNS << endl;cout << "Class static: " << MyClass::lifeStatic << endl;return 0;
}

在这里插入图片描述

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

#include<iostream>
using namespace std;namespace hhy
{int num1 = 10;namespace ty{int num2 = 20;}
}int main()
{cout << hhy::tsy::num2 << endl;
}

上图我在hhy命名空间里嵌套定义了ty命名空间,程序可以正确打印20。

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

在这里插入图片描述

在上面图片,我定义了math.h,math.cpp,test.cpp三个文件,在文件中分别定义了Calc命名空间,程序是可以正确运行的,定义重名命名空间并不会使程序发生错误。

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

std 是 C++ 标准库的官方命名空间,它将标准库的所有内容(如 cout、endl、vector 等)封装起来,防止污染全局作用域。
如果不使用 using namespace stdstd:: 限定符,编译器会认为 cout 等标识符未定义,导致编译错误。

3. 命名空间使用

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

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

所以我们要使用命名空间中定义的变量/函数,有三种方式:
• 指定命名空间访问,项目中推荐这种方式。
• using将命名空间中某个成员展开,项目中经常访问的不存在冲突的成员推荐这种方式。
• 展开命名空间中全部成员,项目不推荐,冲突风险很大,日常小练习推荐使用。

#include<stdio.h>
namespace N
{int a = 1;int b = 2;
}//指定命名空间访问
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 N;
int main()
{printf("%d\n", a);printf("%d\n", b);return 0;
}
http://www.dtcms.com/wzjs/174194.html

相关文章:

  • 分类网站一天做几条合适百度小说app
  • 南京seo收费资源优化网站排名
  • 做网站学什么专业哈尔滨最新疫情
  • 客户网站留言广州日新增51万人
  • 门户网站建设与管理做竞价推广大概多少钱
  • 二级域名备案流程重庆seowhy整站优化
  • 自己做网站帮公司出认证证书违法吗企业网络推广的方式有哪些
  • 网站建设劳务合同百度权重等级
  • 网站建设 电话咨询优质的seo快速排名优化
  • 写文案要看的网站竞价 推广
  • 深圳做网站建设广告推广文案
  • wordpress动漫网站网站策划方案
  • 网站路径怎么做seo网络排名优化哪家好
  • 网站网页设计制作软文兼职
  • 营销型网站的基本模板上海seo关键词优化
  • 自建网站套现企业网络推广软件
  • 如何做 行业社交类网站西安网站关键词推广
  • 做外贸 建网站要注意什么win7优化设置
  • 二级网站建设电商营销策划方案
  • 个人可以做自媒体网站吗企业网站推广策划书
  • 做国外网站建设系统优化软件推荐
  • 重庆网页设计网站关键词百度自然排名优化
  • 网站模板兼容手机端什么软件可以免费发广告
  • wordpress换icon搜索引擎优化seo网站
  • 找做模型方案去哪个网站国内免费域名注册
  • 手机动态网站制作seo搜索引擎优化方法
  • 2018做网站还赚钱吗百度关键词首页排名
  • 做网站用哪个软件最好php注册网站流程
  • 徐州教育平台网站建设网站收录优化
  • 企业网站建设规划书吴中seo网站优化软件