c++基础+类和对象
引用一旦被赋值就不能再赋其他值如下图返回返回值的引用意思是返回返回值本身在主函数中调用func函数该函数返回a的引用a的别名出函数后a会被销毁相当于返回野指针被引用的数据的数据类型引用 引用新名字 旧名字int a10;int ra a;cons修饰引用对象做函数参数被引用对象不需要修改时时范围会很宽泛以后会这么做不能再引用其他对象意思是不能再换被引用对象不能变成其他人的别名宏是一个函数替换不建立栈帧提高效率但是顾虑太多c中用online函数代替他编译时 C 编译器会在调用的地方展开内联函数普通函数的调用流程程序运行到函数调用语句时CPU 会跳转到函数的内存地址执行代码执行完成后再跳回原来的调用位置继续执行。这个过程有固定的额外开销。内联函数的处理编译器在编译阶段不是运行时就把内联函数的函数体代码直接 “复制粘贴” 到每一个调用这个函数的位置替换掉原来的函数调用语句。运行时没有 “跳转调用” 的过程直接执行展开后的代码。栈帧函数调用时会在程序的栈内存上开辟一块专属空间用来保存函数的参数、局部变量、返回地址、寄存器状态等数据。每次函数调用都要创建栈帧函数执行完还要销毁栈帧这个过程有 CPU 和内存的固定开销。效率提升的逻辑内联函数在编译时直接展开后运行时就没有了函数调用的动作自然也就不需要为这个函数创建、销毁栈帧消除了函数调用的额外开销。对于频繁调用的短小函数这个优化带来的性能提升会非常明显。inline 只是给编译器的建议不是强制命令。一般是5-10行代码如果函数体过大、包含递归、复杂循环 / 分支逻辑编译器大概率会忽略 inline 关键字拒绝内联把它当成普通函数处理。内联函数的函数体通常要和声明放在同一个头文件中。因为编译器要在编译时看到完整的函数体才能完成展开操作如果只在头文件声明、cpp 文件定义跨编译单元无法完成内联。此时使用空指针null有歧义以后用nullptr表示空指针nullptr在逻辑上代表空指针但它本身不是整数0而是一个独立的、类型安全的空指针常量在 C 中推荐始终使用nullptr代替NULL或0来表示空指针。c中结构体除了函数不能放其他数据类型都能。 类全能放限定符可以多次使用c中此种用法错误必须用右图所示但是C中两种方法都对。及继承了c中结构体用法也有c的新用法结构体不用写struct)。c中结构体typedef重命名后将新名字做结构体类型名再创建该类型变量如左图。c中直接将结构体类型名做类型创建变量。C中下图两种都兼容定义在类内的函数默认为inline如下左图。但也可以将函数声明与定义分开写将声明写在类外将定义函数定义在类域内如下右图类内的变量为变量声明类内的变量此时才为变量定义。因为创建类变量如d2给类内的变量分配了空间如d2,d3这种以类为模板创建类变量叫做实例化
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2421887.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!