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

广州建设水务局网站自助构建网站

广州建设水务局网站,自助构建网站,厦门网站推广找谁,广州seo和网络推广#x1f31f; Hello#xff0c;我是egoist2023#xff01; #x1f30d; 种一棵树最好是十年前#xff0c;其次是现在#xff01; 目录 输入输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in… Hello我是egoist2023 种一棵树最好是十年前其次是现在 目录 输入输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr inline nullptr 输入输出 前文了解到本贾尼认为C语言是有缺陷的想弥补其缺陷最后搞出自己的一套C体系。其实C语言的scanf和printf函数是有缺陷且过于冗杂(每次都需要手动指定格式)是否能通过一种方式使输入输出更简便呢针对此问题在C中引入了输入输出流。 iostream (全称: Input Output Stream )是标准的输入、输出流库定义了标准的输入、输出对象。 std::cin 是 istream 类的对象它主要面向窄字符的标准输入流。(C标准库都封在std的命名空间中)std::cout 是 ostream 类的对象它主要面向窄字符的标准输出流。 std::endl 是⼀个函数流插入输出时相当于插入一个换行字符加刷新缓冲区(简单看成C语言中的\n)。 是流插入运算符是流提取运算符。(在C语言还充当左移/右移位运算符。输入输出可以自动识别变量类型(本质是通过函数重载实现的)最重要的是 C的流能更好的支持自定义类型对象的输入输出。 #includeiostream #includestdio.hint main() {int a 1;std::cout a;printf(%d, a);return 0; } IO流涉及类和对象运算符重载、继承等很多面向对象的知识因此在此章节只介绍IO流的用法。在vs编译器中iostream间接包含了stdio.h,因此可以使用printf。 #includeiostreamint main() {int a 1;std::cout a;printf(%d, a);return 0; } 缺省参数(默认参数) 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时如果没有指定实参则采用该形参的缺省值。 缺省参数分为全缺省(全部形参给缺省值)和半缺省参数(部分形参给缺省值)。C规定半缺省参数必须从左往右依次连续缺省不能间隔给缺省值。(同理依次给实参)函数声明和定义分离时缺省参数不能在函数声明和定义中同时出现规定必须函数声明给缺省值。(这样做的目的是避免冲突因为编译器在链接时会合成制表符此时声明和定义都有缺省值就会产生冲突) 缺省参数的意义远不止如此在之前的栈和队列章节中栈的初始化中capacity默认开始为0。若一开始明确插入1000个数据时初始化时直接开好避免多次扩容损失效率。(没有传参时会采用缺省参数的值。) 函数重载 在C语言中若要实现Add函数(需要支持整形、浮点型相加)时,需要保证Add函数名字不冲突为了解决这一困扰。在C中添加了函数重载这个概念其要求这些同名函数的形参不同可以是参数个数不同或者类型不同(不支持返回类型不同)呈现多态行为使用更加方便。函数支持三种类型的重载。 函数重载是C中实现多态性的一种重要方式具有重要意义增强了代码的可读性函数的通用性和复用性同时为之后的模板(函数重载的支持)、运算符重载做了铺垫。 参数类型不同 int Add(int x, int y) {cout int Add(int x, int y) endl;return x y; }double Add(double x, double y) {cout double Add(double x, double y) endl;return x y; } 参数个数不同 void f() {cout f() endl; } void f(int a) {cout f(int a) endl; } 参数顺序不同 void f(int a, char b) {cout f(int a,char b) endl; } void f(char b, int a) {cout f(char b, int a) endl; } 引用 概念及定义 引用是给已存在变量取一个别名语法层面上编译器不会为其开辟内存空间 它和引用的变量共用同一块内存空间。(实际底层实现上开辟了空间,是用一个指针指向其引用的变量) 通过调试可以知道别名和引用的变量指向 共同占用一块空间。 反汇编观察 底层a和b各自开了一块空间b通过指针ptr指向了变量a 特性及使用 • 引用在定义时 必须初始化 • 支持多次引用 • 引用一个实体其别名再不能引用其他实体 实践中引用传参和引用做返回值中减少拷贝提高效率和改变引用对象时同时改变被引用对象。使用C引用替代指针传参目的是简化程序避开复杂的指针。引用传参和引用作返回值在实践中经常用到达到了减少拷贝提高效率指针也可以减少拷贝和改变引用对象的目的。(针对自定义类型更为明显) 在指针章节中要求交换两个变量涉及到传址调用(形参改变实参)。同样使用引用也可以达到此目的。 const引用 变量也有被const修饰的情况此时对其进行引用会报错(权限被放大了)因此需要引入 const引用。 权限要点  --   权限可以平移或者缩小但一定不能放大。 引用一个const对象必须用const引用。const引用也可以引用普通对象因为对象的访问权限可以缩小不能放大。 需要注意的是 int rb a*3; double d 12.34; int rd d 这种场景下需要使用const引用 这里涉及到类型转换将double转换为int为何需要使用const引用呢 在类型转换中会产生临时对象(也称未命名对象)这个对象具有常性此时rb和rd都是引用这个临时变量权限被放大了因此会出现报错。 临时对象是编译器需要一个空间暂存表达式的求值结果时临时创建的一个未命名的对象。 与指针的关系 由上文可以发现引用与指针的部分功能是类似的那为什么本贾尼还引入了引用这个语法呢 引⽤和指针在实践中相辅相成功能有重叠性但是各有特点互相不可替代。如C引⽤定义后不能改变指向相反地指针可以改变指向链表章节中指针定义的结构是不能用引用替代的。 引用与指针的关系 引用指针语法上不开空间要开空间存储变量地址必须初始化非必须初始化不能改变指向可以改变指向可以直接访问指向对象需要借助*访问指向对象引用结果为引用类型大小看32位/64位平台\野指针和空指针问题 内联inline和nullptr inline inline修饰的函数叫做内联函数编译时C编译器会在调用的地方展开内联函数这样调用内联函数就需要建立栈帧了就可以提高效率。 这个功能是和C语言中的define是类似的inline又有什么优势呢 宏函数实现很复杂很容易出错的且不方调试C设计了inline目的就是替代C的宏函数。 #define Add(x,y) ((x)(y)) inline int Add(const int x, const int y) {     return x y; } 在实现Add函数中使用define宏定义时需要考虑各种因素而使用inline则无需顾虑很多让编译器决定是否展开此函数。 inline对于编译器是一个建议(选择性展开)适用于频繁调用的短小函数对于递归函数代码相对多一些的函数加上inline也会被编译器忽略。 inline不建议声明和定义分离到两个文件 分离会导致链接错误。因为inline被展开就没有函数地址链接时会出现报错(不能合成制表符)。 vs编译器 debug版本下面默认是不展开inline的因此需要设置下。 nullptr 引入nullptr实际是为了替代C语言的NULL(有缺陷)。 NULL实际是一个宏在头文件(stddef.h)中。 #ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif #endif C中NULL可能被定义为 常量0 或者C中被定义为 无类型指针(void*) 的常量。但都不可避免的会遇到一些麻烦。 nullptr关键字是⼀种特殊类型的字面量它可以转换成任意其他类型的指针类型。使用 nullptr定义空指针可以避免类型转换 的问题。(nullptr只能被隐式地转换为指针类型而不能被转换为整数类型) 在此代码中本想通过f(NULL)调用函数f(int x),但运行后发现调用的f(int x)函数与设计此程序是相违反的。 若NULL为无类型指针(void*)呢运行后会报错这是因为2个函数重载中没有一个能转换所有参数类型。 #includeiostream using namespace std;void f(int x) {cout f(int x) endl; }void f(int* ptr) {cout f(int* ptr) endl; }int main() {f(NULL);//调用f(int x)f(nullptr);//调用f(int* ptr)f((void*)0);//errreturn 0; }
http://www.hkea.cn/news/14315024/

相关文章:

  • 宁波医院网站建设潍坊最早做网站的公司
  • 网站管理运营it运维前景怎么样
  • 宁波网站建设服务公司电话网站流量所需的成本.
  • 网站建设验收需要注意什么百度商家
  • 汕头定制网站建设网络信息公司名字
  • 查建筑材料的网站建设代刷网站
  • 甘肃省路桥建设集团网站如何建设学校的微网站首页
  • 图书网站建设论文设计师门户网站程序
  • 网页链接成整体通过网站建协企业是什么公司
  • 湖南二级建造师在哪个网站做变更镇江网站建设推广公司
  • 比较知名的设计网站有哪些广告素材
  • 江苏瀚和建设网站wordpress教程创建网页
  • 温州网站建设科技有限公司mv网站源码
  • 网站开发使用云数据库技术教程自助建网站平台怎么收费
  • 上海比较好的网站建设公司做淘宝那样的网站
  • 上海网站建设 虹口嵌入式软件开发流程规范
  • 优秀设计师网站网站界面设计简单
  • 网站开发实用吗哪个网站买做房图纸好
  • 深圳做手机商城网站建设电子商务网站按其实现的技术可分为
  • 网站改版的seo注意事项北京设计制作公司
  • 合肥软件开发网站建设做网站四百全包
  • 小型网站的建设方案商城网站建设第一章
  • php网站屏蔽词怎么做泰安哪里做网站
  • 桂林象鼻山离哪个高铁站近北京中小企业网站建设公司
  • 个人网站如何做即时支付教务处网站建设要求
  • 网站管理建设的需求分析请举例说明什么是网络营销
  • 为什么做的网站在谷歌浏览器打不开温州网站开发流程
  • 阿里巴巴网官方网站唐山网站
  • 个人空间网站建设简单网
  • 信息图表设计网站班级网站建设主题