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

网站建设 标书安全员资格证书查询网

网站建设 标书,安全员资格证书查询网,京东优惠券网站怎么做,怎样加强企业网站建设命名空间 在 C/C 中#xff0c;变量、函数和类都是大量存在的#xff0c;这些变量、函数和类的名称将都存在全局作用域中#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化#xff0c;以避免命名冲突或名字污染#xff0c;namespace 关键字的…命名空间 在 C/C 中变量、函数和类都是大量存在的这些变量、函数和类的名称将都存在全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化以避免命名冲突或名字污染namespace 关键字的出现就是针对这种问题的。 定义 定义命名空间需要使用到 namespace 关键字后面跟命名空间的名字然后接一对 {} 即可{} 中即为命名空间的成员。 命名空间中可以定义变量/函数/类命名空间可以嵌套同一个工程中允许存在多个相同名称的命名空间编译器会合成为一个命名空间 注意一个命名空间就定义了一个新的作用域命名空间中的所有内容都局限于该命名空间中。 使用方式 加命名空间名称及作用域限定符 使用 using 将命名空间中成员引入 使用 using namespace 命名空间名称引入 // 分别对应上面三种方式 // 1. std::cin // 2. using std::cin // 3. using namespce std缺省参数 缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时如果没有指定实参则采用该默认值否则使用指定的实参。 分类 全缺省参数半缺省参数 // 分别对应上面两种形式 // 1. void test1(int a 1, int b 2, int c 3) // 2. void test2(int a, int b 2, int c 3)注意 半缺省参数必须从右往左依次给出不能间隔 一旦某个参数被赋予了默认值它后面的所有参数都必须有默认值 缺省参数不能在函数声明和定义中同时出现 在给定的作用域中一个形参只能被赋予一次默认实参 局部变量不能作为默认实参 除此之外只要表达式的类型能转化成形参所需的类型该表达式就能作为默认实参用作默认实参的名字在函数声明所在的作用域解析而这些名字的求值过程发生在函数调用时 // 多次声明同一个函数为其不同参数添加默认值是合法的但是不推荐 void test(int a, int b 2, int c 3); void test(int a 1, int b, int c);函数重载 自然语言中一个词可以有多重含义人们可以通过上下文来判断该词真实的含义即该词被重载了。 概念 函数重载是函数的一种特殊情况C 允许在同一作用域中声明几个功能类似的同名函数这些同名函数的形参列表参数个数或类型或顺序不同返回值不作要求常用来处理实现功能类似数据类型不同的问题。 重载示例 int Add(int left, int right); long Add(long left, long right); double Add(double left, double right);Name Mangling C 早期 Unix 下的 C 语言因为历史原因规定C 语言源代码文件中的所有全局变量和函数经过编译以后相对应的符号前加上下划线 _。在现在 Linux 下的 GCC 编译器中默认情况已经去掉了在 C 语言符号前面加下划线的方式而是直接使用函数名。 C 语言不支持函数重载因为 C 语言直接使用函数名去表示和查找而重载函数函数名相同。编译的时候两个函数名相同的函数在符号表中存在歧义和冲突其在链接的时候也存在歧义和冲突。 C C 的目标文件符号表中不是直接用函数名来标识和查找函数。 g 的函数名修饰规则 所有的符号都以 _Z 开头对于嵌套的名字在名称空间或在类里面的后面紧跟 N然后是各个名称空间和类的名字每个名字前是名字字符串长度再以 E 结尾对于一个函数来说它的参数列表紧跟在函数名 或 E 后面全局变量和静态变量也有同样的机制不过修饰并没有使用变量类型 有了函数名修饰规则只要参数列表不同符号表存储的修饰后的函数名就不同也就不存在二义性和冲突了。 extern “C” 有时候在 C 工程中可能需要将某些函数按照 C 的风格来编译在函数前加 extern “C”意思是告诉编译器将该函数按照 C 语言规则来编译。 那么 C 语言的项目可以使用 C 编写的库吗 是可以的库是一种二进制文件只要能够找到相应的函数就可以使用。若有函数重载的话是没办法使用的。 引用 概念 引用不是新定义一个变量而是给已存在变量取一个别名编译器不会为引用变量开辟内存空间它和它引用的变量共用同一块内存空间。 语法类型 引用变量名 引用实体 int a 10; int ra a;引用类型必须和引用实体是同种类型的。 特性 引用在定义时必须初始化一个变量可以有多个引用引用一旦引用一个实体再不能引用其他实体 使用场景 做参数提高效率形参的改变可以影响实参做返回值提高效率修改返回变量 注意如果函数返回时出了函数作用域如果返回对象还未还给系统则可以使用引用返回如果已经还给系统了则必须使用传值返回。 传值和传引用效率比较 以值作为参数或返回值类型在函数传参/返回时不会直接传递实参/将变量本身直接返回而是传递/返回一份变量的临时的拷贝因此用值作为参数/返回值类型效率是非常低下的尤其是当参数或者返回值类型非常大时。 指针和引用的区别 在语法概念上引用就是一个别名没有独立空间和其引用体公用一块空间。 在底层实现上实际是有空间的引用是按照指针的方式来实现的。 引用和指针的不同点 引用在定义时必须初始化指针没有要求引用在初始化时绑定一个实体后就不能再绑定其他实体而指针可以改变指向没有 NULL 引用但有 NULL 指针在 sizeof 中含义不同引用结果为引用类型的大小但指针始终是指针类型所占字节个数有多级指针但是没有多级引用访问实体方式不同指针需要显式解引用引用编译器自己处理 内敛函数 概念 以 inline 修饰的函数叫做内联函数编译时 C 编译器会在调用内联函数的地方展开没有函数压栈的开销内联函数可以提升程序运行的效率。 特性 inline 是一种以空间换时间的做法省去调用函数额开销增加了内存和磁盘占用所以代码很长或者有循环/递归的函数不适宜使用作为内联函数inline 对于编译器而言只是一个请求编译器会自动优化如果定义为 inline 的函数体内有循环/递归等等编译器优化时会忽略掉内联请求inline 不能将声明和定义分离分离会导致链接错误 功能 宏的优点 增强代码的复用性提高性能 宏的缺点 不方便调试宏预处理阶段进行了替换导致代码可读性差可维护性差容易误用没有类型安全的检查 函数定义换用内联函数 在类内定义的成员函数会默认加上内敛隐式内敛内敛声明定义必须一起否则不起作用 常量定义换用 const C 中被 const 修饰的变量编译器看到变量被 const 修饰默认其不会改变若后面有用到该变量会将其值放入寄存器中使用时直接读取寄存器中数据而不是到内存中读取。 编译器一般不会为整数型 const 对象在内存中开辟空间除非指针或引用等必须用它的地址的情况 可以用 volatile 修饰该变量让每次取值都必须到内存中读取 #include iostream using namespace std;int main() {// volatile const int a 10;const int a 10;int* p (int*)(a);*p 20;// 此时打印 a 的值是 10, *p 的值是 20cout a *p endl;return 0; }constexpr 常量表达式const expression是指值不会改变并且在编译过程就能得到计算结果的表达式。 一个对象或表达式是不是常量表达式由它的数据类型和初始值共同决定例如 const int num1 1230; // num1 是常量表达式 const int num2 num1 1; // num2 是常量表达式 int num3 1002; // num3 不是常量表达式 const int num4 GetNum(); // num4 不是常量表达式 尽管 num3 的初始值是个字面值常量但由于它的数据类型只是普通的 int 而非 const int所以它不属于常量表达式。另一方面尽管 num4 本身是一个常量但它的具体值直到运行时才能获取到所以也不是常量表达式。 constexpr 变量 C 11 新标准规定允许将变量声明为 constexpr 类型以便编译器来验证变量的值是否是一个常量表达式。声明为 constexpr 的变量一定是一个常量而且必须用常量表达式初始化。 constexpr int num1 1230; // 1230 是常量表达式 constexpr int num2 num1 1; // num1 1 是常量表达式 constexpr int num3 GetNum(); // 只有当 GetNum 是一个 constexpr 函数时才是一条正确的声明语句指针和引用都能定义成 constexpr但它们的初始值却受到严格的限制。一个 constexpr 指针的初始值必须是 nullptr 或 0或者是存储于某个固定地址中的对象。 固定地址函数体外定义的对象全局对象、static 修饰的对象constexpr 修饰指针只限定指针的指向不能更改对指向空间的值不作限制 constexpr 函数 constexpr 函数constexpr function是指能用于常量表达式的函数。 需要遵守两个约定 函数的返回类型及所有形参的类型都得是字面值类型函数体中必须有且只有一条 return 语句 执行初始化任务时编译器把 constexpr 函数的调用替换成其结果值。为了能在编译过程中随时展开constexpr 函数被隐式地指定为内敛函数。constexpr 函数体内也可以包含其他语句只要这些语句在运行时不执行任何操作就行。例如空语句、类型别名以及 using 声明。 nullptr 由于 C 中 NULL 被定义成字面量 0这样就可能回带来一些问题因为 0 既能指针常量又能表示整形常量。所以出于清晰和安全的角度考虑C11 中新增了 nullptr用于表示空指针。 //stddef.h #ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif #endif注意 在使用 nullptr 时不需要包含头文件因为 nullptr 是 C11 新增的关键字在 C11 中sizeof(nullptr) 与 sizeof((void*)0) 所占的字节数相同为了提高代码的健壮性在表示指针空值时建议使用 nullptr
http://www.tj-hxxt.cn/news/142714.html

相关文章:

  • xml文件里做网站超链接中国设计网官网图标
  • 网站搭建是哪个岗位做的事儿做响应式网站需要学哪些知识
  • 如何做网站资讯ppt模板怎么套用
  • 企业网站静态模板网站后门清除
  • 军事新闻头条最新消息网站自动seo
  • 花都建设网站淅川微网站开发
  • dede网站前台没有图片网页版微信手机版
  • 国外做储物柜的网站saas商城系统
  • 网站建设的公司怎么收费网站开发手机端
  • 吉林省住房建设安厅网站wordpress 存档页面
  • 友点企业网站管理系统模板下载多城市网站如何做seo
  • 企业网站建设的主要内容万盛经开区规划建设局网站
  • 公司网站怎么申请怎么注册wordpress 5
  • 网站内页降权 关键词排名下降做类似猪八戒网的网站
  • 住房和城乡建设部网站网站首页 选择入口 设计
  • 针对人群不同,网站做细分上海做网站的小公司有哪些
  • 雅安市建设局网站交通局网站建设方案
  • 中英文企业网站系统wordpress免费中文
  • 北美购物网站排名手机单页网站
  • html5手机网站模板 下载网站备案抽查
  • python3网站开发广告联盟上怎么做网站
  • 网络加速器外网崇明网站怎么做seo
  • 企业网站设计分类网页界面设计使用色彩的作用是什么
  • 泉州哪里有搭建网站的公司苏州市住房和建设局网站
  • 韩国设计公司网站网站建设的基本步骤
  • 营销网站建设计算机专业主要学什么课程
  • shopnc本地生活o2o网站系统seo营销怎么做
  • 长沙网站托管哪家好wordpress 菜单分类
  • 建站服务网络公司校园二手市场网站开发
  • 网站做sem能够提高收录量吗做网站计划