c++学习笔记
数据类型整数类型字符类型浮点数类型字符串类型布尔类型(bool)符号常量枚举类型引用类型自定义类型
函数——程序的功能模块iostream库cstdlib库cmath库
运算符类和对象类和对象的定义前向引用声明
UML简介结构体联合体枚举类
基本程序框架
#include <iostream>
using namespace std;
int main()
{
cout << "hello world" << endl;
system("pause");
return 0;
}
数据类型
整数类型
基本的整数类型:int
有符号 ( signed )
无符号 ( unsigned )
短整数 ( short )
长整数 ( long )
长长整数 ( long long )
short int <= int <= long int << long long int
字符类型
char 单字节
浮点数类型
单精度 ( float )
双精度 ( double )
扩展精度 ( long double )
字符串类型
有字符串常量
基本类型中没有字符串常量
采用字符数组存储字符串( C语言风格 )
标准C++类库中的String类( C++风格 )
布尔类型(bool)
只有两个值:true(真)、false(假)
常用来表示关系比较、相等比较或逻辑运算的结果
符号常量
const 数据类型说明符 常量名=常量值
或数据类型说明符 const 常量名=常量值
例如:const float PI = 3.1415926;
枚举类型
定义方式:将全部可取值一一列举出来
语法形式:
enum 枚举类型名 {变量值列表}
enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT}
枚举元素是常量,不能对它们赋值
枚举元素具有默认值,它们依次为:0,1,2,……
也可以再声明时另外指定枚举元素的值
如:enum Weekday{SUN=7,MON=1,TUE,WED,TUE,FRI,SAT}
枚举值可以进行关系运算
引用类型
引用( & )是标识符的别名
定义一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象
一旦一个引用被初始化后,就不能改为指向其它对象
引用可以作为形参,指向对象本身,指针指向对象的地址
自定义类型
typedef 已有类型名 新类型名表
using 新类型名 = 已有类型名
函数——程序的功能模块
类型标识符 函数名 (形式参数表)
{
语句序列
}
iostream库
cin: 从键盘读入值, cin<<radius;
cout : cout << "hello world"<<radius<<'\n';
cstdlib库
(1)rand函数:
函数原型:int rand(void);
功能和返回值:求出并返回一个伪随机数
(2)srand函数:
原型:void srand(unsigned int seed)
参数:seed产生随机数的种子
功能:为使rand()产生一序列伪随机整数而设置起始点。使用1作为seed参数,可以重新初始化rand()
cmath库
sin(), cos(), tan()
运算符
(1)基本运算符:
+ - * / %;
(2)优先级与结合性:
先乘除,后加减,同级自左至右
(3)++,--(自增、自减)
例如:i++; 若要参与其他运算,先运行,后加一;
--j; 先加一,再参与其他运算。
(4)复合赋值运算符:
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
(5)逗号运算和逗号表达式:
格式:表达式1,表达式2
求解顺序及结果
1. 求解表达式1,再求解表达式2
2. 最终结果为表达式2的值
例如:
a = 3 * 5, a * 4,最终结果为60
(6)逻辑运算与逻辑表达式:
!(非) &&(与) ||(或)
(7)条件运算符与条件表达式:
一般形式:
1. 表达式1 ? 表达式2 : 表达式3
2. 表达式1必须是bool类型
(8)sizeof运算符:
1. 语法形式:sizeof(类型名)或sizeof表达式
2. 结果值:“类型名”所指定的类型,或“表达式”的结果类型所占的字节数
(9)位运算:
1.与运算:&;或运算:|;取反:~
2.按位异或:^;相同为0,不同为1
3.移位:<<,>>
(1). 左移运算(<<):左移后,低位补0,高位舍弃
(2). 右移运算(>>):右移后,低位舍弃,高位补0或符号位
(10)if: if(……);……;else……;
(11)switch:
switch(……){
case a: ……;break;
case b: ……;break;
……
default: ……;break;
}
(12)循环语句:
1. while: //先判断条件再执行
while(i < 10){
sum += i;
i++;
}
2. do{ //先执行再判断条件
sum += i;
i++;
}while (i<10)
3. for
for(i= 0; i < n; i++)
sum += i;
类和对象
类和对象的定义
(1)类定义的语法形式
class 类名称
{
public:
公有成员(外部接口)
private:
私有成员
protected:
保护型成员
}
(2)对象定义的语法
类名 对象名;
(3)构造函数
类中的特殊函数
用于描述初始化算法
在对象被创建时使用特定的值构造对象,将对象初始化为一个特定的初始状态
构造函数的形式:
1. 函数名与类名相同
2. 不能定义返回值类型,也不能有return语句
3. 可以有形式参数,也可以没有形式参数
4. 可以是内联函数(inline)
5. 可以重载
6. 可以带默认参数值
类名::类名(int a, int b, int c) : aa(a), bb(b), cc(c){}
(4)析构函数
原型:~类名()
析构函数没有参数,没有返回类型
前向引用声明
类应该先声明,后使用
如果需要在某个类的声明之前,引用该类,则应进行前向引用声明
前向引用声明只为程序引入一个标识符,但具体声明在其他地方
注意事项:
1.在提供一个完整的类声明之前,不能声明该类的对象,也不能在内联成员函数中使用该类的对象
2.当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节
UML简介
三个基本的部分:
1. 事物(Things)
2. 关系(Relationships)
3. 图(Diagrams)
#mermaid-svg-mQ8tlBKZvarF0xnR .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .label text{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .node rect,#mermaid-svg-mQ8tlBKZvarF0xnR .node circle,#mermaid-svg-mQ8tlBKZvarF0xnR .node ellipse,#mermaid-svg-mQ8tlBKZvarF0xnR .node polygon,#mermaid-svg-mQ8tlBKZvarF0xnR .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-mQ8tlBKZvarF0xnR .node .label{text-align:center;fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .node.clickable{cursor:pointer}#mermaid-svg-mQ8tlBKZvarF0xnR .arrowheadPath{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-mQ8tlBKZvarF0xnR .flowchart-link{stroke:#333;fill:none}#mermaid-svg-mQ8tlBKZvarF0xnR .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-mQ8tlBKZvarF0xnR .edgeLabel rect{opacity:0.9}#mermaid-svg-mQ8tlBKZvarF0xnR .edgeLabel span{color:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-mQ8tlBKZvarF0xnR .cluster text{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-mQ8tlBKZvarF0xnR .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-mQ8tlBKZvarF0xnR text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-mQ8tlBKZvarF0xnR .actor-line{stroke:grey}#mermaid-svg-mQ8tlBKZvarF0xnR .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-mQ8tlBKZvarF0xnR #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .sequenceNumber{fill:#fff}#mermaid-svg-mQ8tlBKZvarF0xnR #sequencenumber{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR #crosshead path{fill:#333;stroke:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .messageText{fill:#333;stroke:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-mQ8tlBKZvarF0xnR .labelText,#mermaid-svg-mQ8tlBKZvarF0xnR .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-mQ8tlBKZvarF0xnR .loopText,#mermaid-svg-mQ8tlBKZvarF0xnR .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-mQ8tlBKZvarF0xnR .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-mQ8tlBKZvarF0xnR .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-mQ8tlBKZvarF0xnR .noteText,#mermaid-svg-mQ8tlBKZvarF0xnR .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-mQ8tlBKZvarF0xnR .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-mQ8tlBKZvarF0xnR .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-mQ8tlBKZvarF0xnR .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-mQ8tlBKZvarF0xnR .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR .section{stroke:none;opacity:0.2}#mermaid-svg-mQ8tlBKZvarF0xnR .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-mQ8tlBKZvarF0xnR .section2{fill:#fff400}#mermaid-svg-mQ8tlBKZvarF0xnR .section1,#mermaid-svg-mQ8tlBKZvarF0xnR .section3{fill:#fff;opacity:0.2}#mermaid-svg-mQ8tlBKZvarF0xnR .sectionTitle0{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .sectionTitle1{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .sectionTitle2{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .sectionTitle3{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-mQ8tlBKZvarF0xnR .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR .grid path{stroke-width:0}#mermaid-svg-mQ8tlBKZvarF0xnR .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-mQ8tlBKZvarF0xnR .task{stroke-width:2}#mermaid-svg-mQ8tlBKZvarF0xnR .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR .taskText:not([font-size]){font-size:11px}#mermaid-svg-mQ8tlBKZvarF0xnR .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-mQ8tlBKZvarF0xnR .task.clickable{cursor:pointer}#mermaid-svg-mQ8tlBKZvarF0xnR .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-mQ8tlBKZvarF0xnR .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-mQ8tlBKZvarF0xnR .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-mQ8tlBKZvarF0xnR .taskText0,#mermaid-svg-mQ8tlBKZvarF0xnR .taskText1,#mermaid-svg-mQ8tlBKZvarF0xnR .taskText2,#mermaid-svg-mQ8tlBKZvarF0xnR .taskText3{fill:#fff}#mermaid-svg-mQ8tlBKZvarF0xnR .task0,#mermaid-svg-mQ8tlBKZvarF0xnR .task1,#mermaid-svg-mQ8tlBKZvarF0xnR .task2,#mermaid-svg-mQ8tlBKZvarF0xnR .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-mQ8tlBKZvarF0xnR .taskTextOutside0,#mermaid-svg-mQ8tlBKZvarF0xnR .taskTextOutside2{fill:#000}#mermaid-svg-mQ8tlBKZvarF0xnR .taskTextOutside1,#mermaid-svg-mQ8tlBKZvarF0xnR .taskTextOutside3{fill:#000}#mermaid-svg-mQ8tlBKZvarF0xnR .active0,#mermaid-svg-mQ8tlBKZvarF0xnR .active1,#mermaid-svg-mQ8tlBKZvarF0xnR .active2,#mermaid-svg-mQ8tlBKZvarF0xnR .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-mQ8tlBKZvarF0xnR .activeText0,#mermaid-svg-mQ8tlBKZvarF0xnR .activeText1,#mermaid-svg-mQ8tlBKZvarF0xnR .activeText2,#mermaid-svg-mQ8tlBKZvarF0xnR .activeText3{fill:#000 !important}#mermaid-svg-mQ8tlBKZvarF0xnR .done0,#mermaid-svg-mQ8tlBKZvarF0xnR .done1,#mermaid-svg-mQ8tlBKZvarF0xnR .done2,#mermaid-svg-mQ8tlBKZvarF0xnR .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-mQ8tlBKZvarF0xnR .doneText0,#mermaid-svg-mQ8tlBKZvarF0xnR .doneText1,#mermaid-svg-mQ8tlBKZvarF0xnR .doneText2,#mermaid-svg-mQ8tlBKZvarF0xnR .doneText3{fill:#000 !important}#mermaid-svg-mQ8tlBKZvarF0xnR .crit0,#mermaid-svg-mQ8tlBKZvarF0xnR .crit1,#mermaid-svg-mQ8tlBKZvarF0xnR .crit2,#mermaid-svg-mQ8tlBKZvarF0xnR .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-mQ8tlBKZvarF0xnR .activeCrit0,#mermaid-svg-mQ8tlBKZvarF0xnR .activeCrit1,#mermaid-svg-mQ8tlBKZvarF0xnR .activeCrit2,#mermaid-svg-mQ8tlBKZvarF0xnR .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-mQ8tlBKZvarF0xnR .doneCrit0,#mermaid-svg-mQ8tlBKZvarF0xnR .doneCrit1,#mermaid-svg-mQ8tlBKZvarF0xnR .doneCrit2,#mermaid-svg-mQ8tlBKZvarF0xnR .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-mQ8tlBKZvarF0xnR .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-mQ8tlBKZvarF0xnR .milestoneText{font-style:italic}#mermaid-svg-mQ8tlBKZvarF0xnR .doneCritText0,#mermaid-svg-mQ8tlBKZvarF0xnR .doneCritText1,#mermaid-svg-mQ8tlBKZvarF0xnR .doneCritText2,#mermaid-svg-mQ8tlBKZvarF0xnR .doneCritText3{fill:#000 !important}#mermaid-svg-mQ8tlBKZvarF0xnR .activeCritText0,#mermaid-svg-mQ8tlBKZvarF0xnR .activeCritText1,#mermaid-svg-mQ8tlBKZvarF0xnR .activeCritText2,#mermaid-svg-mQ8tlBKZvarF0xnR .activeCritText3{fill:#000 !important}#mermaid-svg-mQ8tlBKZvarF0xnR .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-mQ8tlBKZvarF0xnR g.classGroup text .title{font-weight:bolder}#mermaid-svg-mQ8tlBKZvarF0xnR g.clickable{cursor:pointer}#mermaid-svg-mQ8tlBKZvarF0xnR g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-mQ8tlBKZvarF0xnR g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-mQ8tlBKZvarF0xnR .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-mQ8tlBKZvarF0xnR .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-mQ8tlBKZvarF0xnR .dashed-line{stroke-dasharray:3}#mermaid-svg-mQ8tlBKZvarF0xnR #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR .commit-id,#mermaid-svg-mQ8tlBKZvarF0xnR .commit-msg,#mermaid-svg-mQ8tlBKZvarF0xnR .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-mQ8tlBKZvarF0xnR g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-mQ8tlBKZvarF0xnR g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-mQ8tlBKZvarF0xnR g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-mQ8tlBKZvarF0xnR .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-mQ8tlBKZvarF0xnR .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-mQ8tlBKZvarF0xnR .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-mQ8tlBKZvarF0xnR .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-mQ8tlBKZvarF0xnR .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-mQ8tlBKZvarF0xnR .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-mQ8tlBKZvarF0xnR .edgeLabel text{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mQ8tlBKZvarF0xnR .node circle.state-start{fill:black;stroke:black}#mermaid-svg-mQ8tlBKZvarF0xnR .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-mQ8tlBKZvarF0xnR #statediagram-barbEnd{fill:#9370db}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-state .divider{stroke:#9370db}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-mQ8tlBKZvarF0xnR .note-edge{stroke-dasharray:5}#mermaid-svg-mQ8tlBKZvarF0xnR .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-mQ8tlBKZvarF0xnR .error-icon{fill:#522}#mermaid-svg-mQ8tlBKZvarF0xnR .error-text{fill:#522;stroke:#522}#mermaid-svg-mQ8tlBKZvarF0xnR .edge-thickness-normal{stroke-width:2px}#mermaid-svg-mQ8tlBKZvarF0xnR .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-mQ8tlBKZvarF0xnR .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-mQ8tlBKZvarF0xnR .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-mQ8tlBKZvarF0xnR .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-mQ8tlBKZvarF0xnR .marker{fill:#333}#mermaid-svg-mQ8tlBKZvarF0xnR .marker.cross{stroke:#333}
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}
#mermaid-svg-mQ8tlBKZvarF0xnR {
color: rgba(0, 0, 0, 0.75);
font: ;
}
张三
李四
王五
你好!李四, 最近怎么样?
你最近怎么样,王五?
我很好,谢谢!
我很好,谢谢!
李四想了很长时间, 文字太长了
不适合放在一行.
打量着王五...
很好... 王五, 你怎么样?
张三
李四
王五
结构体
(1)结构体是一种特殊形态的类
与类的唯一区别:
类的缺省访问权限是private,结构体的缺省访问权限是public
(2) struct 结构体名称{
公有成员
protected:
保护型成员
private:
私有成员
};
(3)若结构体的全部数据成员都是公有成员,没有用户定义的构造函数,没有基类和虚函数,可以直接用下面的语法形式初始化:
类型名 变量名 = {成员数据1初值, 成员数据2初值, ……};
也可以单独对结构体中变量赋值,结构体名.成员,采用指针时,结构体指针->成员
联合体
(1)定义形式
union 联合体名称{
公有成员
protected:
保护型成员
private:
私有成员
}
(2)特点:
成员共用同一组内存单元
任何两个成员不会同时有效
(3)举例说明:
union Mark{ //表示成绩的联合体
char grade; //等级制的成绩
bool pass; //只记是否通过课程的成绩
int percent; //百分制的成绩
}
联合体公用存储空间,以成员中最大字节数作为存储空间
(4)无名联合
例: union{
int i;
float f;
}
只能一个成员有效
枚举类
(1)枚举类定义:
语法形式
enum class 枚举类型名: 底层类型{枚举值列表};
(底层类型默认是int型)
例:
enum class Type{General, Light, Medium, Heavy};
enum class Type: char{General, Light, Medium, Heavy};
enum class Category{General=1, Pistol, MachineGun, Cannon};
(2)枚举类的优势
1.强作用域,其作用域限制在枚举类中
2.转换限制,枚举类对象不可以与整型隐式地互相转换
3.可以指定底层类型