📄 csdn_文档中心_关键字static总结第一次在csdn写的,请大家指点点(错误和不足)之二.htm
字号:
<TD><B> 关键字static总结<第一次在CSDN写的,请大家指点点(错误和不足)>之二</B> cgsw12345(原作)
</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
<TD
width=500> static,静态局部变量(对象),静态全局变量(对象),静态函数(静态全局函数),静态成员变量(对象),静态成员函数</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
<TABLE border=0 width=600>
<TBODY>
<TR>
<TD align=left><BR>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>三:静态(<SPAN lang=EN-US>static)几个典型的应用:<?xml:namespace prefix =
o ns = "urn:schemas-microsoft-com:office:office"
/><o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体"><SPAN
style="mso-list: Ignore"><FONT size=3>1.</FONT><SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>代替<SPAN lang=EN-US>menu的作用(menu
hank)<o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>大家都知道如果程序要在,要在类定义的内部直接初始化变量并使用对于以夜的编译器只能使用<SPAN
lang=EN-US>menu来达到这种效果,代码像这样:<o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN
style="mso-tab-count: 4">
</SPAN>class print<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN
style="mso-tab-count: 3">
</SPAN>menu{count = 10 };//借助枚举来得到一个初始值<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN
style="mso-tab-count: 3">
</SPAN>string info[count];<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>};<SPAN style="mso-tab-count: 1">
</SPAN><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN
style="mso-tab-count: 2">
</SPAN>用MFC编写过程序代码的都应该知道这个功能,它就是通过menu来接初始化类中的IDD然后进行使用,看一面一段MFC产生的代码<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>///////////////////////////////////////////////////////////////////////<o:p></o:p></FONT></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><FONT
size=3><SPAN lang=EN-US
style="COLOR: blue; FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">class</SPAN><SPAN
lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">
CACETESTDlg : <SPAN style="COLOR: blue">public</SPAN>
CDialog<o:p></o:p></SPAN></FONT></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3>{<o:p></o:p></FONT></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><FONT
size=3><SPAN lang=EN-US
style="COLOR: blue; FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">public</SPAN><SPAN
lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">:<o:p></o:p></SPAN></FONT></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><FONT
size=3><SPAN lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="mso-tab-count: 1"> </SPAN>//</SPAN><SPAN
lang=EN-US
style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体; mso-ascii-font-family: 新宋体">……</SPAN><SPAN
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">其它成员函数和构造函数的定义<SPAN
lang=EN-US style="COLOR: green"><o:p></o:p></SPAN></SPAN></FONT></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; TEXT-INDENT: 21pt; mso-layout-grid-align: none; mso-char-indent-count: 2.0"><SPAN
lang=EN-US
style="COLOR: green; FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3>// 对话框数据<o:p></o:p></FONT></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3><SPAN style="mso-tab-count: 1">
</SPAN><SPAN style="COLOR: blue">enum</SPAN> { IDD =
IDD_ACETEST_DIALOG };<SPAN style="COLOR: green">
//使用menu直接初始化IDD,IDD_ACETEST_DIALOG是对话框的ID值</SPAN><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><SPAN
style="mso-spacerun: yes"> </SPAN>//</SPAN><SPAN lang=EN-US
style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体; mso-ascii-font-family: 新宋体">……</SPAN><SPAN
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">其他成员函数的定义。<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3>};<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><o:p><FONT
size=3> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>//实现文件<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>//……<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3>CACETESTDlg::CACETESTDlg(CWnd* pParent <SPAN
style="COLOR: green">/*=NULL*/</SPAN>)<o:p></o:p></FONT></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3><SPAN style="mso-tab-count: 1"> </SPAN>:
CDialog(CACETESTDlg::IDD, pParent)<SPAN
style="COLOR: green">//注:这里直接使用IDD初始化基类。<o:p></o:p></SPAN></FONT></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3>{<o:p></o:p></FONT></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3><SPAN style="mso-tab-count: 1">
</SPAN>m_hIcon =
AfxGetApp()->LoadIcon(IDR_MAINFRAME);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'"><FONT
size=3>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>//……<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>////////////////////////////////////////////////////////////////////////////<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; tab-stops: right 415.3pt"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>上面这种直接初始并使用的功能是借助<SPAN
lang=EN-US>menu来实现的。但这有个不好之处就是使menu在这里丧失了本来的作用(menu本身的功能没有得到体现)但有了static之后可以在一个类中使用static常量来达到同样的效果,因为一个类的静态常量被当作一个编译时的常量,而又因为静态具有文件作用域的内部连接,所以不会产生重复定义的冲突。其代码示例在介绍静态成员变量(对象)时已经给出。<o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; tab-stops: right 415.3pt"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN style="mso-spacerun: yes">
</SPAN>不知道大家有不有注意,menu只能使用整型,但类内部静态常量可以是任何类型,甚至抱用户自定义类型。<SPAN
style="mso-tab-count: 1"> </SPAN><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体"><SPAN
style="mso-list: Ignore"><FONT size=3>2.</FONT><SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>单件模式<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; mso-char-indent-count: 2.5"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
size=3>相大家都知道单件模式吧,如果不熟悉可以参考相产模式的书籍,单件模式保证一个类仅有一个实例存在<SPAN
lang=EN-US>,具体就是通过静态成员变量和静态成员函数以及类的访问层次相结合而实现的,具体代码如下:<o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; mso-char-indent-count: 2.5"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -