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

网页设计制作网站模板免费网站规划方案模板

网页设计制作网站模板免费,网站规划方案模板,asp.net网站开发使用到的技术,网站后台模板制作流程目录 1、引用 1.1 引用概念 1.2 引用特性 1.3 常引用 1.4 使用场景 1.4.1 引用做参数 1.4.2 引用做返回值 1.5 引用和指针的区别 2、内联函数 2.1 概念 2.2 特性 3、auto关键字 4、基于范围的for循环 5、指针空值nullptr 5.1 C98 中的指针空值处理 5.2 C11 …

目录

1、引用

1.1 引用概念

1.2 引用特性

1.3 常引用

1.4 使用场景

1.4.1 引用做参数

 1.4.2 引用做返回值

1.5 引用和指针的区别

2、内联函数 

2.1 概念

2.2 特性

3、auto关键字 

4、基于范围的for循环 

5、指针空值nullptr 

5.1 C++98 中的指针空值处理

5.2 C++11 中 nullptr 的优势


  本章节将延续上篇文章未讲完的内容,期待接下来的内容哦!!!

1、引用

1.1 引用概念

类型& 引用变量名(对象名) = 引用实体;
void TestRef()
{int a = 10;int& ra = a;//<====定义引用类型printf("%p\n", &a);printf("%p\n", &ra);
}

     ra是a的别名,是一个变量,占用同一块内存

    注意: 引用类型 必须和引用 实体 同种类型
1.2 引用特性
    1. 引用在 定义时必须初始化
    2. 一个变量可以有多个引用
    3. 引用一旦引用一个实体,再不能引用其他实体
1.3 常引用

    只有引用才涉及权限的变化

1.4 使用场景
1.4.1 引用做参数

    输出型参数:形参的改变会改变实参

    引用做参数不会开辟空间

 1.4.2 引用做返回值

    引用做返回值不会创建临时变量

1.5 引用和指针的区别

    引用语法层面不开空间,底层实现和指针类似

面试常考点:

2、内联函数 

2.1 概念
    以 inline 修饰 的函数叫做内联函数, 编译时 C++ 编译器会在 调用内联函数的地方展开 ,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。
    如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用
查看方式:
1. release 模式下,查看编译器生成的汇编代码中是否存在 call Add
2. debug 模式下,需要对编译器进行设置,否则不会展开 ( 因为 debug 模式下,编译器默认不会对代码进行优化,以下给出vs2022 的设置方式 )
2.2 特性
1. inline 是一种 以空间换时间 的做法,如果编译器将函数当成内联函数处理,在 编译阶段,会
用函数体替换函数调用 ,缺陷:可能会使目标文件变大,优势:少了调用开销,提高程序运
行效率。
2. inline 对于编译器而言只是一个建议,不同编译器关于 inline 实现机制可能不同 ,一般建
议:将 函数规模较小 ( 即函数不是很长,具体没有准确的说法,取决于编译器内部实现 )
是递归、且频繁调用 的函数采用 inline 修饰,否则编译器会忽略 inline特性。下图为《 C++prime 》第五版关于 inline 的建议:
     问题: 为啥内联函数可能会导致目标文件变大

3. inline 不建议声明和定义分离,分离会导致链接错误。因为 inline 被展开,就没有函数地址
了,链接就会找不到
// F.h
#include <iostream>
using namespace std;
inline void f(int i);
// F.cpp
#include "F.h"
void f(int i)
{cout << i << endl;
}
// main.cpp
#include "F.h"
int main()
{f(10);return 0;
}
// 链接错误:main.obj : error LNK2019: 无法解析的外部符号 "void __cdecl 
f(int)" (?f@@YAXH@Z),该符号在函数 _main 中被引用

内联函数和宏函数
    相似点: 
    避免函数调用开销:都能在一定程度上避免常规函数调用时的栈帧创建、参数传递等开销,提高程序运行效率。
    代码替换:在编译或预处理阶段,都会将相关代码替换到调用处。内联函数由编译器决定是否展开替换,宏函数是在预处理阶段进行文本替换。 
    优缺点
    内联函数:优点是有类型检查和语法检查,增强了程序的健壮性,且调试方便;缺点是编译器对其展开有条件限制,当函数体复杂时可能不进行内联,同时会使代码体积增大。
    宏函数:优点是简单灵活,可定义复杂的表达式,在代码生成方面有一定的优势;缺点是没有类型检查,容易出现副作用,且在调试时难以定位问题,也可能导致代码可读性变差。

3、auto关键字 

    使用 auto 定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导 auto 的实际类型 。因此 auto 并非是一种 类型 的声明,而是一个类型声明时的 占位符 ,编译器在编 译期会将 auto 替换为变量实际的类型

4、基于范围的for循环 

void TestFor1()
{int array[] = { 1, 2, 3, 4, 5 };//让数组中的元素大小变成原来的二倍for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)array[i] *= 2;//打印数组元素for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)cout << *p << endl;
}void TestFor2()
{int array[] = { 1, 2, 3, 4, 5 };//让数组中的元素大小变成原来的二倍for (auto& e : array)e *= 2;//打印数组元素for (auto e : array)cout << e << " ";}int main()
{TestFor2();return 0;
}

5、指针空值nullptr 

5.1 C++98 中的指针空值处理

初始化方式
    在 C/C++ 编程里,为避免未初始化指针带来的错误,习惯给指针合适初值。在 C++98 中,当指针无合法指向时,常见初始化方式:

NULL的本质

NULL 本质是宏,在传统 C 头文件 stddef.h 中定义如下:

即 NULL 可能被定义为字面常量 0 ,或无类型指针 (void*) 的常量 。

使用 NULL 的麻烦

    这里 f(0) 调用 f(int) 没问题,但 f(NULL) 由于 NULL 定义的模糊性(既像 0 又像指针),可能导致编译器匹配混乱,而 f((int*)NULL) 虽然明确转化为指针类型调用 f(int*) ,但这种写法不够简洁直观 。

5.2 C++11 中 nullptr 的优势

无需额外头文件
  nullptr 是 C++11 引入的新关键字,专门表示指针空值 。使用它时,无需包含额外头文件,代码简洁性提升。

字节数特性
    在 C++11 中,sizeof(nullptr) 与 sizeof((void*)0) 所占字节数相同 。这意味着 nullptr 在内存占用等底层特性上,和传统表示空指针的方式在字节层面有对应关系。

提升代码健壮性
    相比 NULL 可能带来的歧义,nullptr 明确表示指针空值。在函数重载等场景下,能让编译器准确匹配函数,减少错误发生概率,使代码更健壮。例如之前的 f 函数调用,使用 nullptr 就很明确:

    总结来说,nullptr 作为 C++11 的新特性,解决了 C++98 中 NULL 表示指针空值的一些弊端,让指针空值的表达更清晰、准确,有助于写出更可靠的代码


文章转载自:

http://3sIzW1Fn.rzcfg.cn
http://2kLYvVrZ.rzcfg.cn
http://wLJKMD9p.rzcfg.cn
http://GVBZAbwi.rzcfg.cn
http://tSFjaSnz.rzcfg.cn
http://XQAEnvmV.rzcfg.cn
http://UfMOCjXx.rzcfg.cn
http://1Wbf8JV7.rzcfg.cn
http://me2VjmHy.rzcfg.cn
http://KOiTZioh.rzcfg.cn
http://2U4OiJrP.rzcfg.cn
http://M8aEna8u.rzcfg.cn
http://U4IFXUsH.rzcfg.cn
http://IonPNFC3.rzcfg.cn
http://RrdOhIqF.rzcfg.cn
http://bFSAN4cy.rzcfg.cn
http://fz1KB9tW.rzcfg.cn
http://g4SLtfrc.rzcfg.cn
http://lUQkN7af.rzcfg.cn
http://YT5LPZnM.rzcfg.cn
http://wipckUAX.rzcfg.cn
http://3R4MQZo7.rzcfg.cn
http://31mmXVsZ.rzcfg.cn
http://Yaos0ksE.rzcfg.cn
http://NclmkR9A.rzcfg.cn
http://JN8Gpk4x.rzcfg.cn
http://ln6MUxD0.rzcfg.cn
http://Gre3l8rb.rzcfg.cn
http://YodP4Vn2.rzcfg.cn
http://ANHNtwtf.rzcfg.cn
http://www.dtcms.com/wzjs/627295.html

相关文章:

  • 英文网站 常用字体杭州网站的优化
  • 外贸假发 网站wordpress趋势图插件
  • 百度 网站建设做网站 租服务器
  • 建设厂招工信息网站兰州seo优化入门
  • 建设教育培训的网站asp 网站管理工具
  • 淮安网站建设费用wordpress多站点无法发布文章
  • 怎么在百度上做网站网站开发人员需要具备的能力
  • 化工集团网站建设 中企动力wordpress 不显示归档
  • 有没有做吉祥物的网站漳州市城乡建设局网站
  • 济南城市建设学院网站网站干什么的
  • 天津制作个人建站秒拍wordpress插件
  • 网站程序源代码中企动力网站建设 医疗
  • 网站备案 如何填wordpress主题 zip
  • 系统优化的意义网站制作及排名优化
  • 网上商城网站建设意义环境设计
  • 企业网站如何做网警备案如何制作wordpress短代码
  • 文档怎么做网站链接四川建设学网官方网站登录
  • 做婚恋网站多少钱义乌注册公司流程和费用
  • 网站开发 验收标准卓老师建站网站后台如何直接登陆
  • 网站建设公司业务在哪里来上海网站建设微信开发
  • 那个网站域名估价好杭州网站开发 网站建设
  • 如网站站长如何对付黑客国外专业做集装箱别墅网站
  • 福田专业网站建设公司哪家好昆明淘宝网站建设
  • 用vs2010做网站论文闸北集团网站建设
  • 最新网站备案教程儿童摄影网站源码
  • 人与狗做的网站谁有做seo需要建网站吗
  • 淘宝商城网站建设申请域名地址
  • 创建网站需要什么技术济南网站建设(选聚搜网络)
  • 网站内容的创新云南省建设厅官方网站证书
  • 创建网站平台深圳知名网络优化公司