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

c .net网站开发实例百度网盘登录

c .net网站开发实例,百度网盘登录,有没有免费的资源可以在线观看,广东专业高端网站建设文章目录 前言一、面向过程和面向对象初步认识二、类的引用三、类的定义四、类的访问限定符及封装五、类的作用域六、类的实例化七、类对象模型八、this指针 前言 #x1f467;个人主页#xff1a;小沈YO. #x1f61a;小编介绍#xff1a;欢迎来到我的乱七八糟小星球… 文章目录 前言一、面向过程和面向对象初步认识二、类的引用三、类的定义四、类的访问限定符及封装五、类的作用域六、类的实例化七、类对象模型八、this指针 前言 个人主页小沈YO. 小编介绍欢迎来到我的乱七八糟小星球 专栏C 心愿便利店 本章内容类和对象 记得 评论 点赞 收藏 关注哦~ 提示以下是本篇文章正文内容下面案例可供参考 一、面向过程和面向对象初步认识 C语言是面向过程的关注的是过程分析出求解问题的步骤通过函数调用逐步解决问题。 C是基于面向对象的关注的是对象将一件事情拆分成不同的对象靠对象之间的交互完成。 二、类的引用 C语言结构体中只能定义变量在C中结构体内不仅可以定义变量也可以定义函数。 比如之前在数据结构初阶中用C语言方式实现的栈结构体中只能定义变量现在以C方式实现会发现struct中也可以定义函数 #mermaid-svg-xZqj6Pz6q2t69RtW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xZqj6Pz6q2t69RtW .error-icon{fill:#552222;}#mermaid-svg-xZqj6Pz6q2t69RtW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xZqj6Pz6q2t69RtW .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-xZqj6Pz6q2t69RtW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xZqj6Pz6q2t69RtW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xZqj6Pz6q2t69RtW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xZqj6Pz6q2t69RtW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xZqj6Pz6q2t69RtW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xZqj6Pz6q2t69RtW .marker.cross{stroke:#333333;}#mermaid-svg-xZqj6Pz6q2t69RtW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xZqj6Pz6q2t69RtW .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-xZqj6Pz6q2t69RtW .cluster-label text{fill:#333;}#mermaid-svg-xZqj6Pz6q2t69RtW .cluster-label span{color:#333;}#mermaid-svg-xZqj6Pz6q2t69RtW .label text,#mermaid-svg-xZqj6Pz6q2t69RtW span{fill:#333;color:#333;}#mermaid-svg-xZqj6Pz6q2t69RtW .node rect,#mermaid-svg-xZqj6Pz6q2t69RtW .node circle,#mermaid-svg-xZqj6Pz6q2t69RtW .node ellipse,#mermaid-svg-xZqj6Pz6q2t69RtW .node polygon,#mermaid-svg-xZqj6Pz6q2t69RtW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xZqj6Pz6q2t69RtW .node .label{text-align:center;}#mermaid-svg-xZqj6Pz6q2t69RtW .node.clickable{cursor:pointer;}#mermaid-svg-xZqj6Pz6q2t69RtW .arrowheadPath{fill:#333333;}#mermaid-svg-xZqj6Pz6q2t69RtW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xZqj6Pz6q2t69RtW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xZqj6Pz6q2t69RtW .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-xZqj6Pz6q2t69RtW .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-xZqj6Pz6q2t69RtW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xZqj6Pz6q2t69RtW .cluster text{fill:#333;}#mermaid-svg-xZqj6Pz6q2t69RtW .cluster span{color:#333;}#mermaid-svg-xZqj6Pz6q2t69RtW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xZqj6Pz6q2t69RtW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} C语言版 结构体中只能定义变量并且声明栈类型的变量时必须写全struct Stack。 typedef int DataType; struct Stack {DataType* _array;size_t _capacity;size_t _size; };struct Stack s;//声明一个结构体变量#mermaid-svg-KOoo76NScvlrnteZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-KOoo76NScvlrnteZ .error-icon{fill:#552222;}#mermaid-svg-KOoo76NScvlrnteZ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KOoo76NScvlrnteZ .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-KOoo76NScvlrnteZ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KOoo76NScvlrnteZ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KOoo76NScvlrnteZ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KOoo76NScvlrnteZ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KOoo76NScvlrnteZ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KOoo76NScvlrnteZ .marker.cross{stroke:#333333;}#mermaid-svg-KOoo76NScvlrnteZ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KOoo76NScvlrnteZ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-KOoo76NScvlrnteZ .cluster-label text{fill:#333;}#mermaid-svg-KOoo76NScvlrnteZ .cluster-label span{color:#333;}#mermaid-svg-KOoo76NScvlrnteZ .label text,#mermaid-svg-KOoo76NScvlrnteZ span{fill:#333;color:#333;}#mermaid-svg-KOoo76NScvlrnteZ .node rect,#mermaid-svg-KOoo76NScvlrnteZ .node circle,#mermaid-svg-KOoo76NScvlrnteZ .node ellipse,#mermaid-svg-KOoo76NScvlrnteZ .node polygon,#mermaid-svg-KOoo76NScvlrnteZ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KOoo76NScvlrnteZ .node .label{text-align:center;}#mermaid-svg-KOoo76NScvlrnteZ .node.clickable{cursor:pointer;}#mermaid-svg-KOoo76NScvlrnteZ .arrowheadPath{fill:#333333;}#mermaid-svg-KOoo76NScvlrnteZ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KOoo76NScvlrnteZ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KOoo76NScvlrnteZ .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-KOoo76NScvlrnteZ .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-KOoo76NScvlrnteZ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KOoo76NScvlrnteZ .cluster text{fill:#333;}#mermaid-svg-KOoo76NScvlrnteZ .cluster span{color:#333;}#mermaid-svg-KOoo76NScvlrnteZ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KOoo76NScvlrnteZ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} C版 C中struct结构体升级成了类它里面不仅可定义变量还可以定义函数并且声明栈类型变量的时候可以不加struct。声明的变量可以通过.去调用类里面的函数。 #includeiostream using namespace std; //C兼容C语言结构用法可以继续使用 //同时struct也升级成了类 struct Stack {//成员函数void Init(){a nullptr;top capacity 0;}void Push(int x){//...}//成员变量int* a;int top;int capacity; };int main() {Stack st2;//C语言是不允许这样定义结构体但是C可以st2.Init();//调用类里面的函数st2.Push(1);st2.Push(2);st2.Push(3);st2.Push(4);return 0; }三、类的定义 class className {// 类体由成员函数和成员变量组成 }; // 一定要注意后面的分号class为定义类的关键字ClassName为类的名字{}中为类的主体注意类定义结束时后面分号不能省略。 类体中内容称为类的成员类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。 #mermaid-svg-fjBjl90rA4O4PwFH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fjBjl90rA4O4PwFH .error-icon{fill:#552222;}#mermaid-svg-fjBjl90rA4O4PwFH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fjBjl90rA4O4PwFH .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-fjBjl90rA4O4PwFH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fjBjl90rA4O4PwFH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fjBjl90rA4O4PwFH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fjBjl90rA4O4PwFH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fjBjl90rA4O4PwFH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fjBjl90rA4O4PwFH .marker.cross{stroke:#333333;}#mermaid-svg-fjBjl90rA4O4PwFH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fjBjl90rA4O4PwFH .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-fjBjl90rA4O4PwFH .cluster-label text{fill:#333;}#mermaid-svg-fjBjl90rA4O4PwFH .cluster-label span{color:#333;}#mermaid-svg-fjBjl90rA4O4PwFH .label text,#mermaid-svg-fjBjl90rA4O4PwFH span{fill:#333;color:#333;}#mermaid-svg-fjBjl90rA4O4PwFH .node rect,#mermaid-svg-fjBjl90rA4O4PwFH .node circle,#mermaid-svg-fjBjl90rA4O4PwFH .node ellipse,#mermaid-svg-fjBjl90rA4O4PwFH .node polygon,#mermaid-svg-fjBjl90rA4O4PwFH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fjBjl90rA4O4PwFH .node .label{text-align:center;}#mermaid-svg-fjBjl90rA4O4PwFH .node.clickable{cursor:pointer;}#mermaid-svg-fjBjl90rA4O4PwFH .arrowheadPath{fill:#333333;}#mermaid-svg-fjBjl90rA4O4PwFH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fjBjl90rA4O4PwFH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fjBjl90rA4O4PwFH .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-fjBjl90rA4O4PwFH .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-fjBjl90rA4O4PwFH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fjBjl90rA4O4PwFH .cluster text{fill:#333;}#mermaid-svg-fjBjl90rA4O4PwFH .cluster span{color:#333;}#mermaid-svg-fjBjl90rA4O4PwFH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fjBjl90rA4O4PwFH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 类的两种定义方式: #mermaid-svg-5a3TXHKQz23gGEe0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5a3TXHKQz23gGEe0 .error-icon{fill:#552222;}#mermaid-svg-5a3TXHKQz23gGEe0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5a3TXHKQz23gGEe0 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-5a3TXHKQz23gGEe0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5a3TXHKQz23gGEe0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5a3TXHKQz23gGEe0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5a3TXHKQz23gGEe0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5a3TXHKQz23gGEe0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5a3TXHKQz23gGEe0 .marker.cross{stroke:#333333;}#mermaid-svg-5a3TXHKQz23gGEe0 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5a3TXHKQz23gGEe0 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5a3TXHKQz23gGEe0 .cluster-label text{fill:#333;}#mermaid-svg-5a3TXHKQz23gGEe0 .cluster-label span{color:#333;}#mermaid-svg-5a3TXHKQz23gGEe0 .label text,#mermaid-svg-5a3TXHKQz23gGEe0 span{fill:#333;color:#333;}#mermaid-svg-5a3TXHKQz23gGEe0 .node rect,#mermaid-svg-5a3TXHKQz23gGEe0 .node circle,#mermaid-svg-5a3TXHKQz23gGEe0 .node ellipse,#mermaid-svg-5a3TXHKQz23gGEe0 .node polygon,#mermaid-svg-5a3TXHKQz23gGEe0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5a3TXHKQz23gGEe0 .node .label{text-align:center;}#mermaid-svg-5a3TXHKQz23gGEe0 .node.clickable{cursor:pointer;}#mermaid-svg-5a3TXHKQz23gGEe0 .arrowheadPath{fill:#333333;}#mermaid-svg-5a3TXHKQz23gGEe0 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5a3TXHKQz23gGEe0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5a3TXHKQz23gGEe0 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-5a3TXHKQz23gGEe0 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-5a3TXHKQz23gGEe0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5a3TXHKQz23gGEe0 .cluster text{fill:#333;}#mermaid-svg-5a3TXHKQz23gGEe0 .cluster span{color:#333;}#mermaid-svg-5a3TXHKQz23gGEe0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5a3TXHKQz23gGEe0 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 1. 声明和定义全部放在类体中 //定义一个人的类 class Person { public://成员函数——显示基本信息void showInfo(){cout _name - _sex - _age - endl;} public://成员变量char* _name;//姓名char* _sex;//性别int _age;//年龄 };需注意成员函数如果在类中定义编译器可能会将其当成内联函数(不会进入符号表否则在.h中定义在其他文件中包含包含了以后符号表中都有一份就冲突了)处理。 #mermaid-svg-ZLLvFjQRrtiS5gsm {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZLLvFjQRrtiS5gsm .error-icon{fill:#552222;}#mermaid-svg-ZLLvFjQRrtiS5gsm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZLLvFjQRrtiS5gsm .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ZLLvFjQRrtiS5gsm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZLLvFjQRrtiS5gsm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZLLvFjQRrtiS5gsm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZLLvFjQRrtiS5gsm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZLLvFjQRrtiS5gsm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZLLvFjQRrtiS5gsm .marker.cross{stroke:#333333;}#mermaid-svg-ZLLvFjQRrtiS5gsm svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZLLvFjQRrtiS5gsm .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZLLvFjQRrtiS5gsm .cluster-label text{fill:#333;}#mermaid-svg-ZLLvFjQRrtiS5gsm .cluster-label span{color:#333;}#mermaid-svg-ZLLvFjQRrtiS5gsm .label text,#mermaid-svg-ZLLvFjQRrtiS5gsm span{fill:#333;color:#333;}#mermaid-svg-ZLLvFjQRrtiS5gsm .node rect,#mermaid-svg-ZLLvFjQRrtiS5gsm .node circle,#mermaid-svg-ZLLvFjQRrtiS5gsm .node ellipse,#mermaid-svg-ZLLvFjQRrtiS5gsm .node polygon,#mermaid-svg-ZLLvFjQRrtiS5gsm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZLLvFjQRrtiS5gsm .node .label{text-align:center;}#mermaid-svg-ZLLvFjQRrtiS5gsm .node.clickable{cursor:pointer;}#mermaid-svg-ZLLvFjQRrtiS5gsm .arrowheadPath{fill:#333333;}#mermaid-svg-ZLLvFjQRrtiS5gsm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZLLvFjQRrtiS5gsm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZLLvFjQRrtiS5gsm .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ZLLvFjQRrtiS5gsm .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ZLLvFjQRrtiS5gsm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZLLvFjQRrtiS5gsm .cluster text{fill:#333;}#mermaid-svg-ZLLvFjQRrtiS5gsm .cluster span{color:#333;}#mermaid-svg-ZLLvFjQRrtiS5gsm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZLLvFjQRrtiS5gsm :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2. 类声明放在.h文件中,成员函数定义放在.cpp文件中 Person.h文件 //定义一个人的类 class Person { public://成员函数——显式基本信息void showInfo(); public://成员变量char* _name;//姓名char* _sex;//性别int _age;//年龄 };Person.cpp文件 #include Person.h //显示基本信息实现输出名字、性别、年龄 void Person::showInfo() {cout _name - _sex - _age - endl; }注意成员函数名前需要加类名:: #mermaid-svg-SMS1YuYbUArtPn5K {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SMS1YuYbUArtPn5K .error-icon{fill:#552222;}#mermaid-svg-SMS1YuYbUArtPn5K .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-SMS1YuYbUArtPn5K .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-SMS1YuYbUArtPn5K .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-SMS1YuYbUArtPn5K .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-SMS1YuYbUArtPn5K .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-SMS1YuYbUArtPn5K .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-SMS1YuYbUArtPn5K .marker{fill:#333333;stroke:#333333;}#mermaid-svg-SMS1YuYbUArtPn5K .marker.cross{stroke:#333333;}#mermaid-svg-SMS1YuYbUArtPn5K svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-SMS1YuYbUArtPn5K .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-SMS1YuYbUArtPn5K .cluster-label text{fill:#333;}#mermaid-svg-SMS1YuYbUArtPn5K .cluster-label span{color:#333;}#mermaid-svg-SMS1YuYbUArtPn5K .label text,#mermaid-svg-SMS1YuYbUArtPn5K span{fill:#333;color:#333;}#mermaid-svg-SMS1YuYbUArtPn5K .node rect,#mermaid-svg-SMS1YuYbUArtPn5K .node circle,#mermaid-svg-SMS1YuYbUArtPn5K .node ellipse,#mermaid-svg-SMS1YuYbUArtPn5K .node polygon,#mermaid-svg-SMS1YuYbUArtPn5K .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-SMS1YuYbUArtPn5K .node .label{text-align:center;}#mermaid-svg-SMS1YuYbUArtPn5K .node.clickable{cursor:pointer;}#mermaid-svg-SMS1YuYbUArtPn5K .arrowheadPath{fill:#333333;}#mermaid-svg-SMS1YuYbUArtPn5K .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-SMS1YuYbUArtPn5K .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-SMS1YuYbUArtPn5K .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-SMS1YuYbUArtPn5K .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-SMS1YuYbUArtPn5K .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-SMS1YuYbUArtPn5K .cluster text{fill:#333;}#mermaid-svg-SMS1YuYbUArtPn5K .cluster span{color:#333;}#mermaid-svg-SMS1YuYbUArtPn5K div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-SMS1YuYbUArtPn5K :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 一般情况下,更期望采用第二种方式 四、类的访问限定符及封装 #mermaid-svg-ZoHOiICGmZLDKC6h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZoHOiICGmZLDKC6h .error-icon{fill:#552222;}#mermaid-svg-ZoHOiICGmZLDKC6h .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZoHOiICGmZLDKC6h .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ZoHOiICGmZLDKC6h .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZoHOiICGmZLDKC6h .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZoHOiICGmZLDKC6h .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZoHOiICGmZLDKC6h .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZoHOiICGmZLDKC6h .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZoHOiICGmZLDKC6h .marker.cross{stroke:#333333;}#mermaid-svg-ZoHOiICGmZLDKC6h svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZoHOiICGmZLDKC6h .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZoHOiICGmZLDKC6h .cluster-label text{fill:#333;}#mermaid-svg-ZoHOiICGmZLDKC6h .cluster-label span{color:#333;}#mermaid-svg-ZoHOiICGmZLDKC6h .label text,#mermaid-svg-ZoHOiICGmZLDKC6h span{fill:#333;color:#333;}#mermaid-svg-ZoHOiICGmZLDKC6h .node rect,#mermaid-svg-ZoHOiICGmZLDKC6h .node circle,#mermaid-svg-ZoHOiICGmZLDKC6h .node ellipse,#mermaid-svg-ZoHOiICGmZLDKC6h .node polygon,#mermaid-svg-ZoHOiICGmZLDKC6h .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZoHOiICGmZLDKC6h .node .label{text-align:center;}#mermaid-svg-ZoHOiICGmZLDKC6h .node.clickable{cursor:pointer;}#mermaid-svg-ZoHOiICGmZLDKC6h .arrowheadPath{fill:#333333;}#mermaid-svg-ZoHOiICGmZLDKC6h .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZoHOiICGmZLDKC6h .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZoHOiICGmZLDKC6h .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ZoHOiICGmZLDKC6h .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ZoHOiICGmZLDKC6h .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZoHOiICGmZLDKC6h .cluster text{fill:#333;}#mermaid-svg-ZoHOiICGmZLDKC6h .cluster span{color:#333;}#mermaid-svg-ZoHOiICGmZLDKC6h div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZoHOiICGmZLDKC6h :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 1. 类的访问限定符 C实现封装的方式用类将对象的属性与方法结合在一块让对象更加完善通过访问权限选择性的将其接口提供给外部的用户使用 #mermaid-svg-FIvDCxCNencz1B9k {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FIvDCxCNencz1B9k .error-icon{fill:#552222;}#mermaid-svg-FIvDCxCNencz1B9k .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-FIvDCxCNencz1B9k .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-FIvDCxCNencz1B9k .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-FIvDCxCNencz1B9k .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-FIvDCxCNencz1B9k .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-FIvDCxCNencz1B9k .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-FIvDCxCNencz1B9k .marker{fill:#333333;stroke:#333333;}#mermaid-svg-FIvDCxCNencz1B9k .marker.cross{stroke:#333333;}#mermaid-svg-FIvDCxCNencz1B9k svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-FIvDCxCNencz1B9k .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-FIvDCxCNencz1B9k .cluster-label text{fill:#333;}#mermaid-svg-FIvDCxCNencz1B9k .cluster-label span{color:#333;}#mermaid-svg-FIvDCxCNencz1B9k .label text,#mermaid-svg-FIvDCxCNencz1B9k span{fill:#333;color:#333;}#mermaid-svg-FIvDCxCNencz1B9k .node rect,#mermaid-svg-FIvDCxCNencz1B9k .node circle,#mermaid-svg-FIvDCxCNencz1B9k .node ellipse,#mermaid-svg-FIvDCxCNencz1B9k .node polygon,#mermaid-svg-FIvDCxCNencz1B9k .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-FIvDCxCNencz1B9k .node .label{text-align:center;}#mermaid-svg-FIvDCxCNencz1B9k .node.clickable{cursor:pointer;}#mermaid-svg-FIvDCxCNencz1B9k .arrowheadPath{fill:#333333;}#mermaid-svg-FIvDCxCNencz1B9k .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-FIvDCxCNencz1B9k .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-FIvDCxCNencz1B9k .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-FIvDCxCNencz1B9k .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-FIvDCxCNencz1B9k .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-FIvDCxCNencz1B9k .cluster text{fill:#333;}#mermaid-svg-FIvDCxCNencz1B9k .cluster span{color:#333;}#mermaid-svg-FIvDCxCNencz1B9k div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-FIvDCxCNencz1B9k :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 访问限定符说明 public修饰的成员在类外可以直接被访问protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止如果后面没有访问限定符作用域就到 } 即类结束。class的默认访问权限为privatestruct为public(因为struct要兼容C) 注意访问限定符只在编译时有用当数据映射到内存后没有任何访问限定符上的区别类里面不受访问限定符的限制 #mermaid-svg-404F6im50662rkHY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-404F6im50662rkHY .error-icon{fill:#552222;}#mermaid-svg-404F6im50662rkHY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-404F6im50662rkHY .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-404F6im50662rkHY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-404F6im50662rkHY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-404F6im50662rkHY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-404F6im50662rkHY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-404F6im50662rkHY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-404F6im50662rkHY .marker.cross{stroke:#333333;}#mermaid-svg-404F6im50662rkHY svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-404F6im50662rkHY .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-404F6im50662rkHY .cluster-label text{fill:#333;}#mermaid-svg-404F6im50662rkHY .cluster-label span{color:#333;}#mermaid-svg-404F6im50662rkHY .label text,#mermaid-svg-404F6im50662rkHY span{fill:#333;color:#333;}#mermaid-svg-404F6im50662rkHY .node rect,#mermaid-svg-404F6im50662rkHY .node circle,#mermaid-svg-404F6im50662rkHY .node ellipse,#mermaid-svg-404F6im50662rkHY .node polygon,#mermaid-svg-404F6im50662rkHY .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-404F6im50662rkHY .node .label{text-align:center;}#mermaid-svg-404F6im50662rkHY .node.clickable{cursor:pointer;}#mermaid-svg-404F6im50662rkHY .arrowheadPath{fill:#333333;}#mermaid-svg-404F6im50662rkHY .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-404F6im50662rkHY .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-404F6im50662rkHY .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-404F6im50662rkHY .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-404F6im50662rkHY .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-404F6im50662rkHY .cluster text{fill:#333;}#mermaid-svg-404F6im50662rkHY .cluster span{color:#333;}#mermaid-svg-404F6im50662rkHY div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-404F6im50662rkHY :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2. 封装 封装将数据和操作数据的方法进行有机结合隐藏对象的属性和实现细节仅对外公开接口来和对象进行交互。 封装本质上是一种管理让用户更方便使用类。比如对于电脑这样一个复杂的设备提供给用户的就只有开关机键、通过键盘输入显示器USB插孔等让用户和计算机进行交互完成日常事务。但实际上电脑真正工作的却是CPU、显卡、内存等一些硬件元件。 对于计算机使用者而言不用关心内部核心部件比如主板上线路是如何布局的CPU内部是如何设计的等用户只需要知道怎么开机、怎么通过键盘和鼠标与计算机进行交互即可。因此计算机厂商在出厂时在外部套上壳子将内部实现细节隐藏起来仅仅对外提供开关机、鼠标以及键盘插孔等让用户可以与计算机进行交互即可。 在C语言中实现封装可以通过类将数据以及操作数据的方法进行有机结合通过访问权限来隐藏对象内部实现细节控制哪些方法可以在类外部直接被使用 五、类的作用域 类定义了一个新的作用域类的所有成员都在类的作用域中。在类体外定义成员时需要使用 :: 作用域操作符指明成员属于哪个类域。 class Person { public:void PrintPersonInfo(); private:char _name[20];char _gender[3];int _age; }; // 这里需要指定PrintPersonInfo是属于Person这个类域 void Person::PrintPersonInfo() {cout _name _gender _age endl; }六、类的实例化 用类类型创建对象的过程称为类的实例化 类是对对象进行描述的是一个模型一样的东西限定了类有哪些成员定义出一个类并没有分配实际的内存空间来存储它比如入学时填写的学生信息表表格就可以看成是一个类来描述具体学生信息。一个类可以实例化出多个对象实例化出的对象 占用实际的物理空间存储类成员变量 int main() {Person._age 100; // 编译失败error C2059: 语法错误:“.”return 0; }做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子类就像是设计图只设计出需要什么东西但是并没有实体的建筑存在同样类也只是一个设计类不能存数据类实例化出的对象才能实际存储数据占用物理空间 #includeiostream using namespace std; class Person { public://成员函数——打印基本信息void Print(){cout _name - _sex - _age endl;}//成员变量const char* _name;//姓名const char* _sex;//性别int _age;//年龄 }; int main() {Person r;//用类实例化一个对象rr._name 张三;r._sex 男;r._age 30;r.Print ();return 0; }七、类对象模型 #mermaid-svg-5fpkv2FpVdELDGAW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5fpkv2FpVdELDGAW .error-icon{fill:#552222;}#mermaid-svg-5fpkv2FpVdELDGAW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5fpkv2FpVdELDGAW .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-5fpkv2FpVdELDGAW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5fpkv2FpVdELDGAW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5fpkv2FpVdELDGAW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5fpkv2FpVdELDGAW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5fpkv2FpVdELDGAW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5fpkv2FpVdELDGAW .marker.cross{stroke:#333333;}#mermaid-svg-5fpkv2FpVdELDGAW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5fpkv2FpVdELDGAW .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5fpkv2FpVdELDGAW .cluster-label text{fill:#333;}#mermaid-svg-5fpkv2FpVdELDGAW .cluster-label span{color:#333;}#mermaid-svg-5fpkv2FpVdELDGAW .label text,#mermaid-svg-5fpkv2FpVdELDGAW span{fill:#333;color:#333;}#mermaid-svg-5fpkv2FpVdELDGAW .node rect,#mermaid-svg-5fpkv2FpVdELDGAW .node circle,#mermaid-svg-5fpkv2FpVdELDGAW .node ellipse,#mermaid-svg-5fpkv2FpVdELDGAW .node polygon,#mermaid-svg-5fpkv2FpVdELDGAW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5fpkv2FpVdELDGAW .node .label{text-align:center;}#mermaid-svg-5fpkv2FpVdELDGAW .node.clickable{cursor:pointer;}#mermaid-svg-5fpkv2FpVdELDGAW .arrowheadPath{fill:#333333;}#mermaid-svg-5fpkv2FpVdELDGAW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5fpkv2FpVdELDGAW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5fpkv2FpVdELDGAW .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-5fpkv2FpVdELDGAW .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-5fpkv2FpVdELDGAW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5fpkv2FpVdELDGAW .cluster text{fill:#333;}#mermaid-svg-5fpkv2FpVdELDGAW .cluster span{color:#333;}#mermaid-svg-5fpkv2FpVdELDGAW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5fpkv2FpVdELDGAW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 1. 计算类对象的大小 #includeiostream using namespace std; // 类中既有成员变量又有成员函数 class A1 { public:void f1() {} private:int _a; }; // 类中仅有成员函数 class A2 { public:void f2() {} }; // 类中什么都没有---空类 class A3 {}; int main() {cout sizeof(A1) endl;cout sizeof(A2) endl;cout sizeof(A3) endl;return 0; }结论一个类的大小实际就是该类中”成员变量”之和当然要注意内存对齐 注意空类的大小空类比较特殊编译器给了空类一个字节来唯一标识这个类的对象。 #mermaid-svg-eYxmNatw3fvbDPhX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-eYxmNatw3fvbDPhX .error-icon{fill:#552222;}#mermaid-svg-eYxmNatw3fvbDPhX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-eYxmNatw3fvbDPhX .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-eYxmNatw3fvbDPhX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-eYxmNatw3fvbDPhX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-eYxmNatw3fvbDPhX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-eYxmNatw3fvbDPhX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-eYxmNatw3fvbDPhX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-eYxmNatw3fvbDPhX .marker.cross{stroke:#333333;}#mermaid-svg-eYxmNatw3fvbDPhX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-eYxmNatw3fvbDPhX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-eYxmNatw3fvbDPhX .cluster-label text{fill:#333;}#mermaid-svg-eYxmNatw3fvbDPhX .cluster-label span{color:#333;}#mermaid-svg-eYxmNatw3fvbDPhX .label text,#mermaid-svg-eYxmNatw3fvbDPhX span{fill:#333;color:#333;}#mermaid-svg-eYxmNatw3fvbDPhX .node rect,#mermaid-svg-eYxmNatw3fvbDPhX .node circle,#mermaid-svg-eYxmNatw3fvbDPhX .node ellipse,#mermaid-svg-eYxmNatw3fvbDPhX .node polygon,#mermaid-svg-eYxmNatw3fvbDPhX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-eYxmNatw3fvbDPhX .node .label{text-align:center;}#mermaid-svg-eYxmNatw3fvbDPhX .node.clickable{cursor:pointer;}#mermaid-svg-eYxmNatw3fvbDPhX .arrowheadPath{fill:#333333;}#mermaid-svg-eYxmNatw3fvbDPhX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-eYxmNatw3fvbDPhX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-eYxmNatw3fvbDPhX .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-eYxmNatw3fvbDPhX .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-eYxmNatw3fvbDPhX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-eYxmNatw3fvbDPhX .cluster text{fill:#333;}#mermaid-svg-eYxmNatw3fvbDPhX .cluster span{color:#333;}#mermaid-svg-eYxmNatw3fvbDPhX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-eYxmNatw3fvbDPhX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2. 结构体内存对齐规则 第一个成员在与结构体偏移量为0的地址处。其他成员变量要对齐到某个数字对齐数的整数倍的地址处。注意对齐数 编译器默认的一个对齐数 与 该成员大小的较小值。(VS中默认的对齐数为8)结构体总大小为最大对齐数所有变量类型最大者与默认对齐参数取最小的整数倍。如果嵌套了结构体的情况嵌套的结构体对齐到自己的最大对齐数的整数倍处结构体的整体大小就是所有最大对齐数含嵌套结构体的对齐数的整数倍。 八、this指针 #mermaid-svg-XC7mcOvAptxY9NIn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-XC7mcOvAptxY9NIn .error-icon{fill:#552222;}#mermaid-svg-XC7mcOvAptxY9NIn .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-XC7mcOvAptxY9NIn .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-XC7mcOvAptxY9NIn .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-XC7mcOvAptxY9NIn .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-XC7mcOvAptxY9NIn .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-XC7mcOvAptxY9NIn .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-XC7mcOvAptxY9NIn .marker{fill:#333333;stroke:#333333;}#mermaid-svg-XC7mcOvAptxY9NIn .marker.cross{stroke:#333333;}#mermaid-svg-XC7mcOvAptxY9NIn svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-XC7mcOvAptxY9NIn .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-XC7mcOvAptxY9NIn .cluster-label text{fill:#333;}#mermaid-svg-XC7mcOvAptxY9NIn .cluster-label span{color:#333;}#mermaid-svg-XC7mcOvAptxY9NIn .label text,#mermaid-svg-XC7mcOvAptxY9NIn span{fill:#333;color:#333;}#mermaid-svg-XC7mcOvAptxY9NIn .node rect,#mermaid-svg-XC7mcOvAptxY9NIn .node circle,#mermaid-svg-XC7mcOvAptxY9NIn .node ellipse,#mermaid-svg-XC7mcOvAptxY9NIn .node polygon,#mermaid-svg-XC7mcOvAptxY9NIn .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-XC7mcOvAptxY9NIn .node .label{text-align:center;}#mermaid-svg-XC7mcOvAptxY9NIn .node.clickable{cursor:pointer;}#mermaid-svg-XC7mcOvAptxY9NIn .arrowheadPath{fill:#333333;}#mermaid-svg-XC7mcOvAptxY9NIn .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-XC7mcOvAptxY9NIn .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-XC7mcOvAptxY9NIn .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-XC7mcOvAptxY9NIn .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-XC7mcOvAptxY9NIn .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-XC7mcOvAptxY9NIn .cluster text{fill:#333;}#mermaid-svg-XC7mcOvAptxY9NIn .cluster span{color:#333;}#mermaid-svg-XC7mcOvAptxY9NIn div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-XC7mcOvAptxY9NIn :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 1. this指针的引出 有一个奇怪的现象 #includeiostream using namespace std; class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout _year - _month - _day endl;} private:int _year;int _month;int _day; }; int main() {Date d1;Date d2;d1.Init(2023, 8, 20);d1.Print();d2.Init(2023, 8, 21);d2.Print();return 0; }对于上述类有这样的一个问题 上面的代码定义了一个日期类Date然后又定义了两个类对象d1和d2然后用这两个对象分别去调用成员函数Print()在类对象模型部分说过成员函数是所有对象公有的存放在公共代码区。那就意味着d1和d2调用的是同一个Print()既然调用的是同一个那为什么d1调的时候打印出来的是d1的日期d2调的时候打印的是d2的日期 C中通过引入this指针解决该问题即C编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数让该指针指向当前对象(函数运行时调用该函数的对象)在函数体中所有“成员变量”的操作都是通过该指针去访问。只不过所有的操作对用户是透明的即用户不需要来传递编译器自动完成。 #mermaid-svg-ZHTMkcyMfvIyW0wk {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZHTMkcyMfvIyW0wk .error-icon{fill:#552222;}#mermaid-svg-ZHTMkcyMfvIyW0wk .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZHTMkcyMfvIyW0wk .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ZHTMkcyMfvIyW0wk .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZHTMkcyMfvIyW0wk .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZHTMkcyMfvIyW0wk .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZHTMkcyMfvIyW0wk .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZHTMkcyMfvIyW0wk .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZHTMkcyMfvIyW0wk .marker.cross{stroke:#333333;}#mermaid-svg-ZHTMkcyMfvIyW0wk svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZHTMkcyMfvIyW0wk .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZHTMkcyMfvIyW0wk .cluster-label text{fill:#333;}#mermaid-svg-ZHTMkcyMfvIyW0wk .cluster-label span{color:#333;}#mermaid-svg-ZHTMkcyMfvIyW0wk .label text,#mermaid-svg-ZHTMkcyMfvIyW0wk span{fill:#333;color:#333;}#mermaid-svg-ZHTMkcyMfvIyW0wk .node rect,#mermaid-svg-ZHTMkcyMfvIyW0wk .node circle,#mermaid-svg-ZHTMkcyMfvIyW0wk .node ellipse,#mermaid-svg-ZHTMkcyMfvIyW0wk .node polygon,#mermaid-svg-ZHTMkcyMfvIyW0wk .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZHTMkcyMfvIyW0wk .node .label{text-align:center;}#mermaid-svg-ZHTMkcyMfvIyW0wk .node.clickable{cursor:pointer;}#mermaid-svg-ZHTMkcyMfvIyW0wk .arrowheadPath{fill:#333333;}#mermaid-svg-ZHTMkcyMfvIyW0wk .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZHTMkcyMfvIyW0wk .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZHTMkcyMfvIyW0wk .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ZHTMkcyMfvIyW0wk .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ZHTMkcyMfvIyW0wk .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZHTMkcyMfvIyW0wk .cluster text{fill:#333;}#mermaid-svg-ZHTMkcyMfvIyW0wk .cluster span{color:#333;}#mermaid-svg-ZHTMkcyMfvIyW0wk div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZHTMkcyMfvIyW0wk :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 温馨提示: this在实参和形参位置不能显示写----void Init(Date*thisint year, int month, int day)但是在类里面可以显示的用----this-_year year; #mermaid-svg-azy1evNo1xoW2mVY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-azy1evNo1xoW2mVY .error-icon{fill:#552222;}#mermaid-svg-azy1evNo1xoW2mVY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-azy1evNo1xoW2mVY .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-azy1evNo1xoW2mVY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-azy1evNo1xoW2mVY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-azy1evNo1xoW2mVY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-azy1evNo1xoW2mVY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-azy1evNo1xoW2mVY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-azy1evNo1xoW2mVY .marker.cross{stroke:#333333;}#mermaid-svg-azy1evNo1xoW2mVY svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-azy1evNo1xoW2mVY .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-azy1evNo1xoW2mVY .cluster-label text{fill:#333;}#mermaid-svg-azy1evNo1xoW2mVY .cluster-label span{color:#333;}#mermaid-svg-azy1evNo1xoW2mVY .label text,#mermaid-svg-azy1evNo1xoW2mVY span{fill:#333;color:#333;}#mermaid-svg-azy1evNo1xoW2mVY .node rect,#mermaid-svg-azy1evNo1xoW2mVY .node circle,#mermaid-svg-azy1evNo1xoW2mVY .node ellipse,#mermaid-svg-azy1evNo1xoW2mVY .node polygon,#mermaid-svg-azy1evNo1xoW2mVY .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-azy1evNo1xoW2mVY .node .label{text-align:center;}#mermaid-svg-azy1evNo1xoW2mVY .node.clickable{cursor:pointer;}#mermaid-svg-azy1evNo1xoW2mVY .arrowheadPath{fill:#333333;}#mermaid-svg-azy1evNo1xoW2mVY .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-azy1evNo1xoW2mVY .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-azy1evNo1xoW2mVY .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-azy1evNo1xoW2mVY .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-azy1evNo1xoW2mVY .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-azy1evNo1xoW2mVY .cluster text{fill:#333;}#mermaid-svg-azy1evNo1xoW2mVY .cluster span{color:#333;}#mermaid-svg-azy1evNo1xoW2mVY div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-azy1evNo1xoW2mVY :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2. this指针的特性 this指针的类型类类型* const即成员函数中不能给this指针赋值。只能在“成员函数”的内部使用this指针本质上是“成员函数”的形参当对象调用成员函数时将对象地址作为实参传递给this形参。所以对象中不存储this指针。this指针是“成员函数”第一个隐含的指针形参一般情况由编译器通过ecx寄存器自动传递不需要用户传递 #mermaid-svg-Br6qLzFUnsLFEbPM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Br6qLzFUnsLFEbPM .error-icon{fill:#552222;}#mermaid-svg-Br6qLzFUnsLFEbPM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Br6qLzFUnsLFEbPM .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Br6qLzFUnsLFEbPM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Br6qLzFUnsLFEbPM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Br6qLzFUnsLFEbPM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Br6qLzFUnsLFEbPM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Br6qLzFUnsLFEbPM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Br6qLzFUnsLFEbPM .marker.cross{stroke:#333333;}#mermaid-svg-Br6qLzFUnsLFEbPM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Br6qLzFUnsLFEbPM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Br6qLzFUnsLFEbPM .cluster-label text{fill:#333;}#mermaid-svg-Br6qLzFUnsLFEbPM .cluster-label span{color:#333;}#mermaid-svg-Br6qLzFUnsLFEbPM .label text,#mermaid-svg-Br6qLzFUnsLFEbPM span{fill:#333;color:#333;}#mermaid-svg-Br6qLzFUnsLFEbPM .node rect,#mermaid-svg-Br6qLzFUnsLFEbPM .node circle,#mermaid-svg-Br6qLzFUnsLFEbPM .node ellipse,#mermaid-svg-Br6qLzFUnsLFEbPM .node polygon,#mermaid-svg-Br6qLzFUnsLFEbPM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Br6qLzFUnsLFEbPM .node .label{text-align:center;}#mermaid-svg-Br6qLzFUnsLFEbPM .node.clickable{cursor:pointer;}#mermaid-svg-Br6qLzFUnsLFEbPM .arrowheadPath{fill:#333333;}#mermaid-svg-Br6qLzFUnsLFEbPM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Br6qLzFUnsLFEbPM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Br6qLzFUnsLFEbPM .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Br6qLzFUnsLFEbPM .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Br6qLzFUnsLFEbPM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Br6qLzFUnsLFEbPM .cluster text{fill:#333;}#mermaid-svg-Br6qLzFUnsLFEbPM .cluster span{color:#333;}#mermaid-svg-Br6qLzFUnsLFEbPM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Br6qLzFUnsLFEbPM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 3. this指针存在哪里? this指针是一个形参存在栈上但是VS下存在ECX寄存器下。编译器在生成程序时加入了获取对象首地址的相关代码并把获取的首地址存在寄存器ECX中其它编译器可能不同也就是说成员函数的其它参数都正常存放在栈中而this指针存放在ECX寄存器中 #mermaid-svg-SUfdpFtzOyhhCGPS {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SUfdpFtzOyhhCGPS .error-icon{fill:#552222;}#mermaid-svg-SUfdpFtzOyhhCGPS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-SUfdpFtzOyhhCGPS .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-SUfdpFtzOyhhCGPS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-SUfdpFtzOyhhCGPS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-SUfdpFtzOyhhCGPS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-SUfdpFtzOyhhCGPS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-SUfdpFtzOyhhCGPS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-SUfdpFtzOyhhCGPS .marker.cross{stroke:#333333;}#mermaid-svg-SUfdpFtzOyhhCGPS svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-SUfdpFtzOyhhCGPS .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-SUfdpFtzOyhhCGPS .cluster-label text{fill:#333;}#mermaid-svg-SUfdpFtzOyhhCGPS .cluster-label span{color:#333;}#mermaid-svg-SUfdpFtzOyhhCGPS .label text,#mermaid-svg-SUfdpFtzOyhhCGPS span{fill:#333;color:#333;}#mermaid-svg-SUfdpFtzOyhhCGPS .node rect,#mermaid-svg-SUfdpFtzOyhhCGPS .node circle,#mermaid-svg-SUfdpFtzOyhhCGPS .node ellipse,#mermaid-svg-SUfdpFtzOyhhCGPS .node polygon,#mermaid-svg-SUfdpFtzOyhhCGPS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-SUfdpFtzOyhhCGPS .node .label{text-align:center;}#mermaid-svg-SUfdpFtzOyhhCGPS .node.clickable{cursor:pointer;}#mermaid-svg-SUfdpFtzOyhhCGPS .arrowheadPath{fill:#333333;}#mermaid-svg-SUfdpFtzOyhhCGPS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-SUfdpFtzOyhhCGPS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-SUfdpFtzOyhhCGPS .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-SUfdpFtzOyhhCGPS .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-SUfdpFtzOyhhCGPS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-SUfdpFtzOyhhCGPS .cluster text{fill:#333;}#mermaid-svg-SUfdpFtzOyhhCGPS .cluster span{color:#333;}#mermaid-svg-SUfdpFtzOyhhCGPS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-SUfdpFtzOyhhCGPS :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 4. 经典面试题:this指针可以为空吗?--可以但要视情况而定 下面程序编译运行结果是 A、编译报错 B、运行崩溃 C、正常运行 #includeiostream using namespace std; class A { public:void Print(){cout Print() endl;} private:int _a; }; int main() {A* p nullptr;p-Print();return 0; }答案及解析C 上述代码定义了一个A类型的指针p并把它置为空然后用这个指针p去调用成员函数这种情况是不会发生解引用的因为Print()的地址不在对象中而是在公共代码区域所以是在编译的时候在公共代码区域拿着Print名字去找地址然后call(地址) 其次p会作为实参传递给this指针。传递空指针不会报错此时成员函数中的this指针是拷贝的p指针的值所以此时的形参this指针是nullptr。 虽然this指针是空但是在Print成员函数中我们并没有去访问任何类中的其他成员(例如this-_a)这就意味着我们根本就没有使用这个this指针所以代码可以正常运行。 A选项是最应该先排除的选项因为空指针的问题是属于运行时错误不是编译报错。 下面程序编译运行结果是 A、编译报错 B、运行崩溃 C、正常运行 #includeiostream using namespace std; class A { public:void PrintA(){cout _a endl;} private:int _a; }; int main() {A* p nullptr;p-PrintA();return 0; }答案及解析B 和上面的代码一样这段代码的this指针也是nullptr但是在成员函数Print中使用了类中的其他成员_a这就相当于this-_a而this是一个空指针这就成了解引用空指针所以会运行崩溃。 #mermaid-svg-G05L51muhaXBr4hV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-G05L51muhaXBr4hV .error-icon{fill:#552222;}#mermaid-svg-G05L51muhaXBr4hV .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-G05L51muhaXBr4hV .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-G05L51muhaXBr4hV .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-G05L51muhaXBr4hV .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-G05L51muhaXBr4hV .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-G05L51muhaXBr4hV .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-G05L51muhaXBr4hV .marker{fill:#333333;stroke:#333333;}#mermaid-svg-G05L51muhaXBr4hV .marker.cross{stroke:#333333;}#mermaid-svg-G05L51muhaXBr4hV svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-G05L51muhaXBr4hV .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-G05L51muhaXBr4hV .cluster-label text{fill:#333;}#mermaid-svg-G05L51muhaXBr4hV .cluster-label span{color:#333;}#mermaid-svg-G05L51muhaXBr4hV .label text,#mermaid-svg-G05L51muhaXBr4hV span{fill:#333;color:#333;}#mermaid-svg-G05L51muhaXBr4hV .node rect,#mermaid-svg-G05L51muhaXBr4hV .node circle,#mermaid-svg-G05L51muhaXBr4hV .node ellipse,#mermaid-svg-G05L51muhaXBr4hV .node polygon,#mermaid-svg-G05L51muhaXBr4hV .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-G05L51muhaXBr4hV .node .label{text-align:center;}#mermaid-svg-G05L51muhaXBr4hV .node.clickable{cursor:pointer;}#mermaid-svg-G05L51muhaXBr4hV .arrowheadPath{fill:#333333;}#mermaid-svg-G05L51muhaXBr4hV .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-G05L51muhaXBr4hV .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-G05L51muhaXBr4hV .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-G05L51muhaXBr4hV .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-G05L51muhaXBr4hV .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-G05L51muhaXBr4hV .cluster text{fill:#333;}#mermaid-svg-G05L51muhaXBr4hV .cluster span{color:#333;}#mermaid-svg-G05L51muhaXBr4hV div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-G05L51muhaXBr4hV :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 什么是空指针引用:如果一个指针变量的值为NULL,解引用这个指针时,会导致程序崩溃
http://www.zqtcl.cn/news/141125/

相关文章:

  • ui网站建设站评价文山建设5G网站
  • 深圳 网站设计公司企业网络搭建教程
  • 做网站策划遇到的问题全网营销型网站模版
  • 网站建设费属于无形资产吗广州高铁新建站在哪里
  • 网站建设平台报价深圳市房产交易中心官网
  • 注册网站网前端素材网
  • 快3网站制作 优帮云贾汪区建设局网站
  • 南昌市有帮做网站的吗网站联动
  • 英文网站建设服务合同模板网站详情页艺术字怎么做的
  • discuz仿搜索网站做网站开发用哪种语言好
  • 企业网站服务网络设备维护是做什么的
  • 罗湖网站公司网站服务器建设合同
  • 公司网站设计注意什么免费名字设计成图案
  • python3 网站建设济南网站建设(选 聚搜网络)
  • 建网站在哪里做广告上海 网站撤销备案
  • 个人可以备案几个网站做网站和网站页面设计
  • 拉丝机东莞网站建设下载安装百度一下
  • 河北建设厅官方网站山西手动网站建设推广
  • 连云港网站建设开发网络营销顾问服务
  • 怎么做网站免有什么网站可以免费建站
  • 安全的营销型网站建设深圳网站建设哪家
  • wordpress能开发商城网站吗seo软件
  • 广东网站建设制作价格低网页升级访问中每天正常更新中
  • 北京市门头沟有没有做网站的小水库运行管理培训教材久久建筑网
  • 免费手机网站app软文推广发稿
  • 安徽网站制作公司建设银行校招网站入口
  • 专业的网站公司到哪里找会员网站模板
  • 山西城乡和建设厅网站首页应用公园下载
  • 自动优化网站建设电话wordpress 后端
  • 淘客网站怎么做啊做网站是什么工作