TreeMind树图在线AI思维导图
当前位置:树图思维导图模板高校与高等教育医学《C++ Primer》知识点总结(四)思维导图

《C++ Primer》知识点总结(四)思维导图

  收藏
  分享
会员免费下载30积分
会员免费使用30积分
L . 浏览量:42022-11-02 16:15:36
已被使用0次
查看详情《C++ Primer》知识点总结(四)思维导图

《C++ Primer》知识点总结

树图思维导图提供 《C++ Primer》知识点总结(四) 在线思维导图免费制作,点击“编辑”按钮,可对 《C++ Primer》知识点总结(四)  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:57ac5d02c24062bf3cf3a47efbd20348

思维导图大纲

《C++ Primer》知识点总结(四)思维导图模板大纲

sizeof运算符

sizeof运算符返回一条表达式或一个类型名字所占的字节数,其所得值是一个size_t类型的常量表达式。

sizeof(type)

sizeof expr

Sales_data data, *p; sizeof(Sales_data); //存储Sales_data类型的对象所占的空间大小 sizeof data; //data的类型的大小,即sizeof(Sales_data) sizeof data.revenue; //Sales_data得revenue成员对应类型的大小 sizeof Sales_data::revenue; //另一种获取revenue大小的方式

sizeof运算符的结果部分地依赖于其作用的类型

对char或者类型为char的表达式执行sizeof运算,结果得1

对引用类型执行sizeof运算得到被引用对象所占空间的大小

对指针执行sizeof运算得到指针本身所占空间的大小

对解引用指针执行sizeof运算得到指针指向的对象所占空间的大小,指针不需有效

对数据执行sizeof运算得到整个数组所占空间的大小,等价于对数组中所有的元素各执行一次sizeof运算并将所得结果求和。注意,sizeof运算不会把数组转换成指针来处理

对string对象或vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中元素占用了多少空间

try语句块和异常处理

throw表达式

异常检测部分使用throw表达式来表示它遇到了无法处理的问题

try语句块

异常处理部分使用try语句块处理异常

异常类

用于在throw表达式和相关的catch子句之间传递异常的具体信息

throw表达式

try语句块

try{ program-statements //正常逻辑 } catch (exception-declaration){ //异常声明1 handler-statements } catch (exception-declaration){ //异常声明2 handler-statements } // ...

常见异常类

exception 最常见的问题

runtime_error 只有在运行时才能检测出的问题

range_error 运行时错误:生成的结果超出了有意义的值域范围

overflow_error 运行时错误:计算上溢

underflow_error 运行时错误:计算下溢

logic_error 程序逻辑错误

domain_error 逻辑错误:参数对应的结果值不存在

invalid_argument 逻辑错误:无效参数

length_error 逻辑错误:试图创建一个超出该类型最大长度的对象

out_of_range 逻辑错误:使用一个超出有效范围的值

函数

内联函数

相当于把内联函数里面的内容写在调用内联函数处

相当于不用执行进入函数的步骤,直接执行函数体

相当于宏,却比宏多了类型检查,真正具有函数特性

编译器一般不内联包含循环、递归、switch 等复杂操作的内联函数

在类声明中定义的函数,除了虚函数的其他函数都会自动隐式地当成内联函数

inline int functionName(int first, int second,...); // 声明2(不加 inline) int functionName(int first, int second,...); // 定义 inline int functionName(int first, int second,...) {/****/};

编译器对inline函数的处理步骤

将 inline 函数体复制到 inline 函数调用点处

为所用 inline 函数中的局部变量分配内存空间

将 inline 函数的的输入参数和返回值映射到调用方法的局部变量空间中

如果 inline 函数有多个返回点,将其转变为 inline 函数代码块末尾的分支(使用 GOTO)

优缺点

优点

内联函数同宏函数一样将在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度

内联函数相比宏函数来说,在代码展开时,会做安全检查或自动类型转换(同普通函数),而宏定义则不会

在类中声明同时定义的成员函数,自动转化为内联函数,因此内联函数可以访问类的成员变量,宏定义则不能

内联函数在运行时可调试,而宏定义不可以

缺点

代码膨胀

内联是以代码膨胀(复制)为代价,消除函数调用带来的开销。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少

inline 函数无法随着函数库升级而升级

是否内联,程序员不可控

相关思维导图模板

《C++ Primer》知识点总结(五)思维导图

树图思维导图提供 《C++ Primer》知识点总结(五) 在线思维导图免费制作,点击“编辑”按钮,可对 《C++ Primer》知识点总结(五)  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:5725866dfdc79fd02c7c7625ad607eb3

《C++ Primer》知识点总结(三)思维导图

树图思维导图提供 《C++ Primer》知识点总结(三) 在线思维导图免费制作,点击“编辑”按钮,可对 《C++ Primer》知识点总结(三)  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:de3eeb9f11fa6ac31d801a50b532be6c