<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>haohtml&#039;s blog &#187; c++</title>
	<atom:link href="http://blog.haohtml.com/tag/c/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.haohtml.com</link>
	<description>haohtml&#039;s life and works</description>
	<lastBuildDate>Tue, 07 Feb 2012 13:56:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>vc6.0中的消息映射机制</title>
		<link>http://blog.haohtml.com/archives/2197</link>
		<comments>http://blog.haohtml.com/archives/2197#comments</comments>
		<pubDate>Mon, 17 Aug 2009 02:34:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[vc]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=2197</guid>
		<description><![CDATA[看一下vc6.0自动生成的这段代码，你可能就明白什么一些了

BEGIN_MESSAGE_MAP(CFFDlg, CDialog) //{{AFX_MSG_MAP(CFFDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_JUMP, OnJump) ON_BN_DOUBLECLICKED(IDC_Stop, OnDoubleclickedStop) //}}AFX_MSG_MAPEND_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CFFDlg, CDialog)

	//{{AFX_MSG_MAP(CFFDlg)

	ON_WM_SYSCOMMAND()

	ON_WM_PAINT()

	ON_WM_QUERYDRAGICON()

	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)

	ON_BN_CLICKED(IDC_JUMP, OnJump)

	ON_BN_DOUBLECLICKED(IDC_Stop, OnDoubleclickedStop)

	//}}AFX_MSG_MAP

END_MESSAGE_MAP()<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="vc中WNDCLASSEX Structure结构简介" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2393&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2197">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">vc中WNDCLASSEX Structure结构简介</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="VC中ShowWindow函数" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2422&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2197">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">VC中ShowWindow函数</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="VC控件与变量绑定小结" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F5604&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2197">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">VC控件与变量绑定小结</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="vc中TextOut函数简介" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2404&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2197">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">vc中TextOut函数简介</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>看一下vc6.0自动生成的这段代码，你可能就明白什么一些了</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">BEGIN_MESSAGE_MAP(CFFDlg, CDialog)</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span style="white-space: pre;"> </span>//{{AFX_MSG_MAP(CFFDlg)</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span style="white-space: pre;"> </span>ON_WM_SYSCOMMAND()</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span style="white-space: pre;"> </span>ON_WM_PAINT()</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span style="white-space: pre;"> </span>ON_WM_QUERYDRAGICON()</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span style="white-space: pre;"> </span>ON_BN_CLICKED(IDC_BUTTON1, OnButton1)</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span style="white-space: pre;"> </span>ON_BN_CLICKED(IDC_JUMP, OnJump)</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span style="white-space: pre;"> </span>ON_BN_DOUBLECLICKED(IDC_Stop, OnDoubleclickedStop)</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span style="white-space: pre;"> </span>//}}AFX_MSG_MAP</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">END_MESSAGE_MAP()</div>
<blockquote><p>BEGIN_MESSAGE_MAP(CFFDlg, CDialog)</p>
<p><span style="white-space: pre;"> </span>//{{AFX_MSG_MAP(CFFDlg)</p>
<p><span style="white-space: pre;"> </span>ON_WM_SYSCOMMAND()</p>
<p><span style="white-space: pre;"> </span>ON_WM_PAINT()</p>
<p><span style="white-space: pre;"> </span>ON_WM_QUERYDRAGICON()</p>
<p><span style="white-space: pre;"> </span>ON_BN_CLICKED(IDC_BUTTON1, OnButton1)</p>
<p><span style="white-space: pre;"> </span>ON_BN_CLICKED(IDC_JUMP, OnJump)</p>
<p><span style="white-space: pre;"> </span>ON_BN_DOUBLECLICKED(IDC_Stop, OnDoubleclickedStop)</p>
<p><span style="white-space: pre;"> </span>//}}AFX_MSG_MAP</p>
<p>END_MESSAGE_MAP()</p></blockquote>
<p>其中ON_BN_CLICKE,ON_BN_DOUBLECLICKED是相应的事件类型，分别表示按钮的单击和双击的，再看一下后面的两个参数IDC_JUMP, OnJump,其中IDC_JUMP很容易可以看出来是一个按键的ID值,OnJump是相应类的成员函数的，这段代码的意思，就是对相应对话框架的<strong>ID</strong>触发不同的<strong>事件</strong>，来执行相应类的<strong>成员函数</strong>。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="vc中WNDCLASSEX Structure结构简介" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2393&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2197">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">vc中WNDCLASSEX Structure结构简介</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="VC中ShowWindow函数" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2422&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2197">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">VC中ShowWindow函数</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="VC控件与变量绑定小结" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F5604&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2197">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">VC控件与变量绑定小结</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="vc中TextOut函数简介" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2404&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2197">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">vc中TextOut函数简介</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/archives/2197/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++引用与指针的比较</title>
		<link>http://blog.haohtml.com/archives/2147</link>
		<comments>http://blog.haohtml.com/archives/2147#comments</comments>
		<pubDate>Wed, 12 Aug 2009 12:25:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[c++]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=2147</guid>
		<description><![CDATA[引用是C++中的概念，初学者容易把引用和指针混淆一起。 
一下程序中，n是m的一个引用（reference），m是被引用物（referent）。 
int m; 
int &#038;n = m; 
n相当于m的别名（绰号），对n的任何操作就是对m的操作。 
所以n既不是m的拷贝，也不是指向m的指针，其实n就是m它自己。 

引用的规则： 

（1）引用被创建的同时必须被初始化（指针则可以在任何时候被初始化）。 
（2）不能有NULL引用，引用必须与合法的存储单元关联（指针则可以是NULL）。 
（3）一旦引用被初始化，就不能改变引用的关系（指针则可以随时改变所指的对象）。 <table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="main(argc,argv) 中的参数(C++/MFC)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">main(argc,argv) 中的参数(C++/MFC)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++ main()函数及其参数" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++ main()函数及其参数</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++虚拟函数实现多态性分析" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++虚拟函数实现多态性分析</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C语言之daemon　socket连接" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F7676&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C语言之daemon　socket连接</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>引用是C++中的概念，初学者容易把引用和指针混淆一起。<br />
一下程序中，n是m的一个引用（reference），m是被引用物（referent）。<br />
int m;<br />
int &amp;n = m;<br />
n相当于m的别名（绰号），对n的任何操作就是对m的操作。<br />
所以n既不是m的拷贝，也不是指向m的指针，其实n就是m它自己。</p>
<p>引用的规则：</p>
<p>（1）引用被创建的同时必须被初始化（指针则可以在任何时候被初始化）。<br />
（2）不能有NULL引用，引用必须与合法的存储单元关联（指针则可以是NULL）。<br />
（3）一旦引用被初始化，就不能改变引用的关系（指针则可以随时改变所指的对象）。</p>
<p>以下示例程序中，k被初始化为i的引用。<br />
语句k = j并不能将k修改成为j的引用，只是把k的值改变成为6。<br />
由于k是i的引用，所以i的值也变成了6。<br />
int i = 5;<br />
int j = 6;<br />
int &amp;k = i;<br />
k = j; // k和i的值都变成了6;</p>
<p>引用的主要功能是传递函数的参数和返回值。</p>
<p>C++语言中，函数的参数和返回值的传递方式有三种：值传递、指针传递和引用传递。</p>
<p>以下是"值传递"的示例程序。</p>
<p>由于Func1函数体内的x是外部变量n的一份拷贝，改变x的值不会影响n, 所以n的值仍然是0。<br />
void Func1(int x)<br />
{<br />
x = x + 10;<br />
}<br />
...<br />
int n = 0;<br />
Func1(n);<br />
cout &lt;&lt; "n = " &lt;&lt; n &lt;&lt; endl; // n = 0</p>
<p>以下是"指针传递"的示例程序。</p>
<p>由于Func2函数体内的x是指向外部变量n的指针，改变该指针的内容将导致n的值改变，所以n的值成为10。<br />
void Func2(int *x)<br />
{<br />
(* x) = (* x) + 10;<br />
}<br />
...<br />
int n = 0;<br />
Func2(&amp;n);<br />
cout &lt;&lt; "n = " &lt;&lt; n &lt;&lt; endl; // n = 10</p>
<p>以下是"引用传递"的示例程序。</p>
<p>由于Func3函数体内的x是外部变量n的引用，x和n是同一个东西，改变x等于改变n，所以n的值成为10。<br />
void Func3(int &amp;x)<br />
{<br />
x = x + 10;<br />
}<br />
...<br />
int n = 0;<br />
Func3(n);<br />
cout &lt;&lt; "n = " &lt;&lt; n &lt;&lt; endl; // n = 10</p>
<p>对比上述三个示例程序，会发现"引用传递"的性质象"指针传递"，而书写方式象"值传递"。</p>
<p>实际上"引用"可以做的任何事情"指针"也都能够做，为什么还要"引用"这东西？<br />
答案是"用适当的工具做恰如其分的工作"。</p>
<p>指针能够毫无约束地操作内存中的任何东西，尽管指针功能强大，但是非常危险。</p>
<p>如果的确只需要借用一下某个对象的"别名"，那么就用"引用"，而不要用"指针"，以免发生意外。</p>
<p>引用就是传递的原始变量，指针传递的是变量的地址，两者没什么关系，</p>
<p>引用主要用于函数参数的传递，相对于传值，可以节省内存空间，<br />
指针可以直接传递变量地址，也可以可以节省内存空间，但是指针功能强大一些，可以在自由操作数组变量</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="main(argc,argv) 中的参数(C++/MFC)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">main(argc,argv) 中的参数(C++/MFC)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++ main()函数及其参数" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++ main()函数及其参数</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++虚拟函数实现多态性分析" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++虚拟函数实现多态性分析</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C语言之daemon　socket连接" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F7676&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C语言之daemon　socket连接</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/archives/2147/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++虚拟函数实现多态性分析</title>
		<link>http://blog.haohtml.com/archives/2120</link>
		<comments>http://blog.haohtml.com/archives/2120#comments</comments>
		<pubDate>Wed, 05 Aug 2009 13:08:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[c++]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=2120</guid>
		<description><![CDATA[面向对象程序设计的基本观点是用程式来仿真大千世界，这使得它的各种根本特性非常人性化，如封装、继承、多态等等，而虚拟函数就是c++中实现多态性的主将。为了实现多态性，c++编译器也革命性地提供了动态联编（或叫晚捆绑）这一特征。

虚拟函数亦是mfc编程的关键所在，mfc编程主要有两种方法：一是响应各种消息，进行对应的消息处理。二就是重载并改写虚拟函数，来实现自己的某些要求或改变系统的某些默认处理。<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="详细讲解C++ 类的继承" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">详细讲解C++ 类的继承</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++引用与指针的比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++引用与指针的比较</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C语言中 static 和 const" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F10881&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C语言中 static 和 const</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="c语言socket编程笔记" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F9855&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">c语言socket编程笔记</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>面向对象程序设计的基本观点是用程式来仿真大千世界，这使得它的各种根本特性非常人性化，如封装、继承、多态等等，而虚拟函数就是c++中实现多态性的主将。为了实现多态性，c++编译器也革命性地提供了动态联编（或叫晚捆绑）这一特征。</p>
<p>虚拟函数亦是mfc编程的关键所在，mfc编程主要有两种方法：一是响应各种消息，进行对应的消息处理。二就是重载并改写虚拟函数，来实现自己的某些要求或改变系统的某些默认处理。</p>
<p>虚函数的地位是如此的重要，对它进行穷根究底，力求能知其然并知其所以然对我们编程能力的提高大有好处。下面且听我道来。</p>
<p><strong>多态性和动态联编的实现过程分析</strong></p>
<p>一、基础</p>
<p>1、多态性：使用基础类的指针动态调用其派生类中函数的特性。</p>
<p>2、动态联编：在运行阶段，才将函数的调用与对应的函数体进行连接的方式，又叫运行时联编或晚捆绑。</p>
<p>二、过程描述</p>
<p>1、编译器发现一个类中有虚函数，编译器会立即为此类生成虚拟函数表 vtable（后面有对vtable的分析）。虚拟函数表的各表项为指向对应虚拟函数的指针。</p>
<p>2、编译器在此类中隐含插入一个指针vptr（对vc编译器来说，它插在类的第一个位置上）。</p>
<p>有一个办法可以让你感知这个隐含指针的存在，虽然你不能在类中直接看到它，但你可以比较一下含有虚拟函数时的类的尺寸和没有虚拟函数时的类的尺寸，你能够发现，这个指针确实存在。</p>
<table id="table1" border="1" cellspacing="0" cellpadding="2" width="400" align="center">
<tbody>
<tr>
<td bgcolor="#e6e6e6">
<pre>class cnovirtualfun
{
private:
long lmember;
public:
long getmembervalue（);
}
class chavevirtualfun
{
private:
long lmember;
public:
virtual long getmembervalue（);
}
cnovirtualfun obj;
sizeof(obj) -&gt; == 4;
chavevirtualfun obj;
sizeof(obj) -&gt; == 8;</pre>
</td>
</tr>
</tbody>
</table>
<p>3、在调用此类的构造函数时，在类的构造函数中，编译器会隐含执行vptr与vtable的关联代码，将vptr指向对应的vtable。这就将类与此类的vtable联系了起来。</p>
<p>4、在调用类的构造函数时，指向基础类的指针此时已经变成指向具体的类的this指针，这样依靠此this指针即可得到正确的vtable，从而实现了多态性。在此时才能真正与函数体进行连接，这就是动态联编。</p>
<p>三、vtable 分析</p>
<p>分析1：虚拟函数表包含此类及其父类的所有虚拟函数的地址。如果它没有重载父类的虚拟函数，vtable中对应表项指向其父类的此函数。反之，指向重载后的此函数。</p>
<p>分析2：虚拟函数被继承后仍旧是虚拟函数，虚拟函数非常严格地按出现的顺序在vtable中排序，所以确定的虚拟函数对应vtable中一个固定的位置n，n是一个在编译时就确定的常量。所以，使用vptr加上对应的n，就可得到对应函数的入口地址。</p>
<p>四、编译器调用虚拟函数的汇编码</p>
<p>push funparam；先将函数参数压栈</p>
<p>push si；将this指针压栈,以确保在当前类上操作</p>
<p>mov bx,Word ptr[si]；因为vc++编译器将vptr放在类的第一个位置上，所以bx内为vptr</p>
<p>call word ptr[bx+n]；调用虚拟函数。n = 所调用的虚拟函数在对应vtable                            中的位置</p>
<p><strong>纯虚函数</strong></p>
<p>一、引入原因</p>
<p>1、为了方便使用多态特性，我们常常需要在基类中定义虚拟函数。</p>
<p>2、在很多情况下，基类本身生成对象是不合情理的。例如，动物作为一个基类可以派生出老虎、孔雀等子类，但动物本身生成对象明显不合常理。</p>
<p>为了解决上述问题，引入了纯虚函数的概念，将函数定义为纯虚函数（方法：virtual returntype                            function()= 0;），则编译器要求在派生类中必须予以重载以实现多态性。同时含有纯虚拟函数的类称为抽象类，它不能生成对象。这样就很好地解决了上述两个问题。</p>
<p>二、纯虚函数实质</p>
<p>1、类中含有纯虚函数则它的vtable表不完全，有一个空位，所以，不能生成对象（编译器绝对不允许有调用一个不存在函数的可能）。在它的派生类中，除非重载这个函数，否则，此派生类的vtable表亦不完整，亦不能生成对象，即它也成为一个纯虚基类。</p>
<p><strong>虚函数与构造、析构函数</strong></p>
<p>1、构造函数本身不能是虚拟函数；并且虚机制在构造函数中不起作用（在构造函数中的虚拟函数只会调用它的本地版本）。</p>
<p>想一想，在基类构造函数中使用虚机制，则可能会调用到子类，此时子类尚未生成，有何后果！？。</p>
<p>2、析构函数本身常常要求是虚拟函数；但虚机制在析构函数中不起作用。</p>
<p>若类中使用了虚拟函数，析构函数一定要是虚拟函数，比如使用虚拟机制调用delete，没有虚拟的析构函数，怎能保证delete的是你希望delete的对象。</p>
<p>虚机制也不能在析构函数中生效，因为可能会引起调用已经被delete掉的类的虚拟函数的问题。</p>
<p><strong>对象切片</strong></p>
<p>向上映射(子类被映射到父类)的时候，会发生子类的vtable完全变成父类的vtable的情况。这就是对象切片。</p>
<p>原因：向上映射的时候，接口会变窄，而编译器绝对不允许有调用一个不存在函数的可能，所以，子类中新派生的虚拟函数的入口在vtable中会被强行“切”掉，从而出现上述情况。</p>
<p><strong>虚拟函数使用的缺点</strong></p>
<p>优点讲了一大堆，现在谈一下缺点，虚函数最主要的缺点是执行效率较低，看一看虚拟函数引发的多态性的实现过程，你就能体会到其中的原因。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="详细讲解C++ 类的继承" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">详细讲解C++ 类的继承</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++引用与指针的比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++引用与指针的比较</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C语言中 static 和 const" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F10881&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C语言中 static 和 const</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="c语言socket编程笔记" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F9855&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">c语言socket编程笔记</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/archives/2120/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ main()函数及其参数</title>
		<link>http://blog.haohtml.com/archives/2116</link>
		<comments>http://blog.haohtml.com/archives/2116#comments</comments>
		<pubDate>Tue, 04 Aug 2009 14:02:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[c++]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/index.php/archives/2116</guid>
		<description><![CDATA[main()函数及其参数
C++标准允许主函数main()有或没有参数列表。 您能在主函数main()中使用一个或更多的参数。 如下是一些惯例:
int main(int argc, char *argv[])
第一个参数argc，指明有多少个参数将被传递给主函数main(),真正的参数以字符串数组（即第2个参数argv[]）的形式来传递。每一个字符串均有自己意思。在这句法上面, 记住, argc代表参数的数量, main()函数本身是在索引0为的第一参数。 所以, argc总是至少为1 。它的总数是从argv列阵的元素数目。 这意味着, argv[0]的值是至关重要的。 如果用户在控制台环境中程序名称后键入含参数的指令, 那么随后的参数将传递给argv[1] 。 例如, 如果程序名称为main,并且已经事先编译好了，这时如果用户键入:
D:\MyPrograms\AConsoleApp\main 68<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="main(argc,argv) 中的参数(C++/MFC)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">main(argc,argv) 中的参数(C++/MFC)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++虚拟函数实现多态性分析" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++虚拟函数实现多态性分析</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++引用与指针的比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++引用与指针的比较</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="c语言socket编程笔记" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F9855&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">c语言socket编程笔记</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main()</span><span style="font-size: 10.5pt; font-family: 宋体;">函数及其参数</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
C++</span><span style="font-size: 10.5pt; font-family: 宋体;">标准允许主函数</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main()</span><span style="font-size: 10.5pt; font-family: 宋体;">有或没有参数列表。</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;"> </span><span style="font-size: 10.5pt; font-family: 宋体;">您能在主函数</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main()</span><span style="font-size: 10.5pt; font-family: 宋体;">中使用一个或更多的参数。</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;"> </span><span style="font-size: 10.5pt; font-family: 宋体;">如下是一些惯例</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">:<br />
int main(int argc, char *argv[])<br />
</span><span style="font-size: 10.5pt; font-family: 宋体;">第一个参数</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">argc</span><span style="font-size: 10.5pt; font-family: 宋体;">，指明有多少个参数将被传递给主函数</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main(),</span><span style="font-size: 10.5pt; font-family: 宋体;">真正的参数以字符串数组（即第</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">2</span><span style="font-size: 10.5pt; font-family: 宋体;">个参数</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">argv[]</span><span style="font-size: 10.5pt; font-family: 宋体;">）的形式来传递。每一个字符串均有自己意思。在这句法上面</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">, </span><span style="font-size: 10.5pt; font-family: 宋体;">记住</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">, argc</span><span style="font-size: 10.5pt; font-family: 宋体;">代表参数的数量</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">, main()</span><span style="font-size: 10.5pt; font-family: 宋体;">函数本身是在索引</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">0</span><span style="font-size: 10.5pt; font-family: 宋体;">为的第一参数。</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;"> </span><span style="font-size: 10.5pt; font-family: 宋体;">所以</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">, argc</span><span style="font-size: 10.5pt; font-family: 宋体;">总是至少为</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">1 </span><span style="font-size: 10.5pt; font-family: 宋体;">。它的总数是从</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">argv</span><span style="font-size: 10.5pt; font-family: 宋体;">列阵的元素数目。</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;"> </span><span style="font-size: 10.5pt; font-family: 宋体;">这意味着</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">, argv[0]</span><span style="font-size: 10.5pt; font-family: 宋体;">的值是至关重要的。</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;"> </span><span style="font-size: 10.5pt; font-family: 宋体;">如果用户在控制台环境中程序名称后键入含参数的指令</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">, </span><span style="font-size: 10.5pt; font-family: 宋体;">那么随后的参数将传递给</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">argv[1] </span><span style="font-size: 10.5pt; font-family: 宋体;">。</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;"> </span><span style="font-size: 10.5pt; font-family: 宋体;">例如</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">, </span><span style="font-size: 10.5pt; font-family: 宋体;">如果程序名称为</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main,</span><span style="font-size: 10.5pt; font-family: 宋体;">并且已经事先编译好了，这时如果用户键入</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">:<br />
D:\MyPrograms\AConsoleApp\main 68</span></p>
<p><span style="font-size: 10.5pt; font-family: 宋体;">值</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">68</span><span style="font-size: 10.5pt; font-family: 宋体;">将会传递给</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">argv[1]<br />
</span><span style="font-size: 10.5pt; font-family: 宋体;">当然取决于你怎么样来编写程序了，也许你的用户将可以输入如下指令：</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
D:\MyPrograms\AConsoleApp\main 68 1250.50<br />
</span><span style="font-size: 10.5pt; font-family: 宋体;">因为参数</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">argv</span><span style="font-size: 10.5pt; font-family: 宋体;">是一些字符串，将这些字符串转换为你需要的值就是我们程序员的任务了。所以用户输入下面这样的指令：</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
D:\MyPrograms\AConsoleApp\main 68 1250.50<br />
</span><span style="font-size: 10.5pt; font-family: 宋体;">并不意味着</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">68</span><span style="font-size: 10.5pt; font-family: 宋体;">是一个整形，而</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">1250.50</span><span style="font-size: 10.5pt; font-family: 宋体;">是一个</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">double</span><span style="font-size: 10.5pt; font-family: 宋体;">，当然</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">C\C++</span><span style="font-size: 10.5pt; font-family: 宋体;">编译器为我们提供了一些转换函数，你可以用</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">atoi()</span><span style="font-size: 10.5pt; font-family: 宋体;">函数把字串</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">68</span><span style="font-size: 10.5pt; font-family: 宋体;">转换为整形。同样，你可以用</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">atof()</span><span style="font-size: 10.5pt; font-family: 宋体;">函数把字串</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">1250.50</span><span style="font-size: 10.5pt; font-family: 宋体;">转换为</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">double</span><span style="font-size: 10.5pt; font-family: 宋体;">类型</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
</span><span style="font-size: 10.5pt; font-family: 宋体;">如果用户输入一个字符，值将用单引号，如果是字符传将用双引号。用这种技术，用户将被允许使用数字、字符及字符串作为程序的参数来运行程序。</span></p>
<p>1 <span style="font-size: 10.5pt; font-family: 宋体;">为了演示在主函数</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main()</span><span style="font-size: 10.5pt; font-family: 宋体;">中使用数字参数，改变上例代码如下：</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
#include<br />
using namespace std;<br />
<span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">int main(int argc, char *argv[])<br />
{<br />
double Operand1, Operand2, Addition;</span></span></p>
<p>Operand1 = atoi( argv[1] );<br />
Operand2 = atoi( argv[2] );<br />
Addition = Operand1 + Operand2;</p>
<p>cout &lt;&lt; "\nFirst Number: " &lt;&lt; Operand1;<br />
cout &lt;&lt; "\nSecond Number: " &lt;&lt; Operand2 &lt;&lt; endl;<br />
cout &lt;&lt; Operand1 &lt;&lt; " + " &lt;&lt; Operand2 &lt;&lt; " = " &lt;&lt; Addition &lt;&lt; endl;</p>
<p>return 0;<br />
}</p>
<p><span style="font-size: 10.5pt; font-family: 宋体;">保存文件，关闭</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">VC</span><span style="font-size: 10.5pt; font-family: 宋体;">工程，在命令行下输入</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">CL main.cpp</span><span style="font-size: 10.5pt; font-family: 宋体;">回车，这时生成了新的</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main.exe</span><span style="font-size: 10.5pt; font-family: 宋体;">程序，再在命令行输入</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main 48.52 1205</span><span style="font-size: 10.5pt; font-family: 宋体;">回车，你会看到如下运行结果：</span></p>
<p><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: 宋体;">----------------------------------------------</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
D:\MyProgram2\AConsoleApp&gt;main 48.52 1205</span></span></p>
<p>First Number: 48<br />
Second Number: 1205<br />
48 + 1205 = 1253</p>
<p>D:\MyProgram2\AConsoleApp&gt;</p>
<p><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">-----------------------------------------------------------------</span></span></p>
<p><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">2 </span><span style="font-size: 10.5pt; font-family: 宋体;">为了演示字符串参数情况，改变代码如下：</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
#include<br />
using namespace std;</span></span></span></p>
<p>int main(int argc, char *argv[])<br />
<span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">{<br />
char Sentence[40];<br />
strcpy(Sentence, argv[1]);</span></p>
<p>cout &lt;&lt; "You typed " &lt;&lt; Sentence&lt;&lt; endl;<br />
return 0;<br />
}<br />
<span style="font-size: 10.5pt; font-family: 宋体;">然后再</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">CL main.cpp</span><span style="font-size: 10.5pt; font-family: 宋体;">编译后输入指令</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main www.czvc.com</span><span style="font-size: 10.5pt; font-family: 宋体;">回车后有：</span></p>
<p><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: 宋体;">---------------------------------------------</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
D:\MyProgram2\AConsoleApp&gt;main www.czvc.com<br />
You typed www.czvc.com</span></span></span></span></p>
<p>D:\MyProgram2\AConsoleApp&gt;<br />
-------------------------------------------------------------<br />
<span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">3 </span><span style="font-size: 10.5pt; font-family: 宋体;">最后再看一例字串和数字并用的情况，改变代码如下：</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
#include<br />
using namespace std;</span></p>
<p>int main(int argc, char *argv[])<br />
{<br />
char FullName[40], strGender[20];<br />
char cGender[10];<br />
float Salary;</p>
<p>strcpy(FullName, argv[1]);<br />
Salary = atof(argv[2]);<br />
strcpy(cGender, argv[3]);</p>
<p>if( cGender == "m" || cGender == "M" )<br />
strcpy(strGender, "Male");<br />
else if( cGender == "f" || cGender == "F" )<br />
strcpy(strGender, "Female");<br />
else<br />
strcpy(strGender, "Unknown Gender");</p>
<p><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">cout &lt;&lt; "Employee Information";<br />
cout &lt;&lt; "\nFull Name: " &lt;&lt; FullName;<br />
cout &lt;&lt; "\nGender: " &lt;&lt; strGender;<br />
cout &lt;&lt; "\nSalary: " &lt;&lt; Salary &lt;&lt; endl;<br />
return 0;<br />
}<br />
</span><span style="font-size: 10.5pt; font-family: 宋体;">然后再</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">CL main.cpp</span><span style="font-size: 10.5pt; font-family: 宋体;">编译后输入指令</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">main "WWW.CZVC.COM, LOOMMAN NETWORKS" 18.52 "M"</span><span style="font-size: 10.5pt; font-family: 宋体;">回车后有：</span></p>
<p><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><span style="font-size: 10.5pt; font-family: 宋体;">-----------------------------</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><br />
D:\MyProgram2\AConsoleApp&gt;main "WWW.CZVC.COM, LOOMMAN NETWORKS" 18.52 "M"<br />
Employee Information<br />
Full Name: WWW.CZVC.COM, LOOMMAN NETWORKS<br />
Gender: Unknown Gender<br />
Salary: 18.52<br />
-----------------------------------------<br />
</span></span></span></span></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="main(argc,argv) 中的参数(C++/MFC)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">main(argc,argv) 中的参数(C++/MFC)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++虚拟函数实现多态性分析" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++虚拟函数实现多态性分析</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++引用与指针的比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++引用与指针的比较</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="c语言socket编程笔记" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F9855&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">c语言socket编程笔记</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/archives/2116/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>main(argc,argv) 中的参数(C++/MFC)</title>
		<link>http://blog.haohtml.com/archives/2114</link>
		<comments>http://blog.haohtml.com/archives/2114#comments</comments>
		<pubDate>Tue, 04 Aug 2009 12:16:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[c++]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/index.php/archives/2114</guid>
		<description><![CDATA[每一c 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放在哪个地方, 以下几点说明都是适合的。
main() 参数
在turbo c2.0启动过程中, 传递main()函数参数: argc, argv。
argc: 整数, 为传给main()的命令行参数个数。
argv: 字符串数组。
在dos 3.x 版本中, argv[0] 为程序运行的全路径名; 对dos 3.0以下的版本, argv[0]为空串("") 。
argv[1] 为在dos命令行中执行程序名后的第一个字符串;
argv[2] 为执行程序名后的第二个字符串; <table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="C++ main()函数及其参数" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++ main()函数及其参数</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++引用与指针的比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++引用与指针的比较</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="详细讲解C++ 类的继承" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">详细讲解C++ 类的继承</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++虚拟函数实现多态性分析" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++虚拟函数实现多态性分析</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>每一c 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放在哪个地方, 以下几点说明都是适合的。<br />
main() 参数<br />
在turbo c2.0启动过程中, 传递main()函数参数: argc, argv。<br />
argc: 整数, 为传给main()的命令行参数个数。<br />
argv: 字符串数组。<br />
在dos 3.x 版本中, argv[0] 为程序运行的全路径名; 对dos 3.0以下的版本, argv[0]为空串("") 。<br />
argv[1] 为在dos命令行中执行程序名后的第一个字符串;<br />
argv[2] 为执行程序名后的第二个字符串;<br />
...<br />
argv[argc]为null。<br />
turbo c2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序的局部变量。<br />
请注意: 一旦想说明这些参数, 则必须按argc, argv的顺序, 如以下的例子:<br />
main()<br />
main(int argc)<br />
main(int argc, char *argv[])<br />
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不用argv[]的情况。<br />
以下提供一样例程序example.exe, 演示如何在main()函数中使用二个参数:<br />
/*program name example.exe*/<br />
#include &lt;stdio.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
main(int argc, char *argv[])<br />
{<br />
int i;<br />
printf("these are the %d command- line arguments passed to<br />
main:\n\n", argc);<br />
for(i=0; i&lt;=argc; i++)<br />
printf("argv[%d]:%s\n", i, argv[i]);<br />
}<br />
如果在dos 提示符下, 按以下方式运行example.exe:<br />
c:\example first_argument "argument with blanks" 3 4 "last butone" stop!<br />
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argumentwith blanks"和"last but one"。<br />
结果是这样的:<br />
the value of argc is 7<br />
these are the 7 command-linearguments passed to main:<br />
argv[0]:c:\turbo\example.exe<br />
argv[1]:first_argument<br />
argv[2]:argument with blanks<br />
argv[3]:3<br />
argv[4]:4<br />
argv[5]:last but one<br />
argv[6]:stop!<br />
argv[7]:(null)</p>
<p>应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包括参数间的空格), 这是由dos 限制的。<br />
其实 main函数有三胩参数，详细内容在下面链接中有。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="C++ main()函数及其参数" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++ main()函数及其参数</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++引用与指针的比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++引用与指针的比较</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="详细讲解C++ 类的继承" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">详细讲解C++ 类的继承</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++虚拟函数实现多态性分析" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2120&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++虚拟函数实现多态性分析</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/archives/2114/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>详细讲解C++ 类的继承</title>
		<link>http://blog.haohtml.com/archives/2110</link>
		<comments>http://blog.haohtml.com/archives/2110#comments</comments>
		<pubDate>Fri, 31 Jul 2009 01:21:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[c++]]></category>

		<guid isPermaLink="false">http://blog.haohtml.com/?p=2110</guid>
		<description><![CDATA[一个私有的或保护的派生类不是子类，因为非公共的派生类不能做基类能做的所有的事，就是指在公开场合，但是在类内部可以的
一、引言

在C++中，类是提供封装的逻辑单位，类的每一个对象都包含有描述其自身状态的数据集合，并且通过接收特定的消息来处理这个数据集合。如果程序设计人员能够通过增加、修改或替换指定类的部分内容的方法对该类进行剪裁，就可以适应不同的应用，从而在很大程度上增强了数据封装的价值，而接下来要讨论的继承就完全可以实现这种操作。<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="main(argc,argv) 中的参数(C++/MFC)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">main(argc,argv) 中的参数(C++/MFC)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++ main()函数及其参数" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++ main()函数及其参数</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="c语言中的scanf语法" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F6393&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">c语言中的scanf语法</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++引用与指针的比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++引用与指针的比较</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>一个私有的或保护的派生类不是子类，因为非公共的派生类不能做基类能做的所有的事，就是指在公开场合，但是在类内部可以的</p>
<h3>一、引言</h3>
<p>在C++中，类是提供封装的逻辑单位，类的每一个对象都包含有描述其自身状态的数据集合，并且通过接收特定的消息来处理这个数据集合。如果程序设计 人员能够通过增加、修改或替换指定类的部分内容的方法对该类进行剪裁，就可以适应不同的应用，从而在很大程度上增强了数据封装的价值，而接下来要讨论的继 承就完全可以实现这种操作。</p>
<h3>二、与继承有关的基本概念</h3>
<p>继承是一个进程，通过继承，一个对象可以获得另一个对象的属性（包括函数），并可向其中加入属于自己的一些特征。作为C++语言的一种重要机制，用 继承的方法可以自动为一个类提供来自另一个类的操作和数据结构，进而使程序设计人员在一个一般的类的基础上很快建立一个新的类，而不必从零开始设计每个 类。</p>
<p>当一个类被其他的类继承时，被继承的类称为基类（可不是鸡肋^_^），又称为父类。</p>
<p>继承其他类属性的类称为派生类，又称为子类。</p>
<p>一般情况下，继承的进程起源于一个基类的定义，基类定义了其所有派生类的公有属性。从本质上讲，基类具有同一类集合中的公共属性，派生类继承了这些属性，并且增加了自己特有的属性。从任何已存在的类继承的实质就是建造新的派生类。</p>
<h3>三、单重继承、多重继承与继承链</h3>
<p>从一个基类派生的继承称为单继承，换句话说，派生类只有一个直接基类。单继承声明语句的常用格式为：</p>
<table class="code" style="border-collapse: collapse;" border="0" cellspacing="1" width="100%" bgcolor="#e0e0e0">
<tbody>
<tr>
<td width="100%"><span style="color: #0000ff;">class</span> 派生类名: 访问控制关键字 基类名<br />
{<br />
数据成员和成员函数声明<br />
};</td>
</tr>
</tbody>
</table>
<p>与此相对地，从多个基类派生的继承称为多继承或多重继承，也就是说，一个派生类有多个直接基类。在某些面向对象的语言（如Java)中不支持类间的 多重继承而只支持单重继承，即一个类至多只能有一个直接父类，因此实现类似的功能需要借助接口等其他机制。而在C++中提供了多重继承的语法支持，使得问 题变得简单了许多。多重继承声明语句的常用格式为：</p>
<table class="code" style="border-collapse: collapse;" border="0" cellspacing="1" width="100%" bgcolor="#e0e0e0">
<tbody>
<tr>
<td width="100%"><span style="color: #0000ff;">class</span> 派生类名: 访问控制关键字 基类名1, 访问控制关键字 基类名2，...<br />
{<br />
数据成员和成员函数声明<br />
};</td>
</tr>
</tbody>
</table>
<p>除了多重继承之外，一个派生类继承多个基类还有一种方法，就是把派生类作为基类再次供别的类继承，产生多层次的继承关系。例如类A派生类B，类B派 生类C，则称类A是类B的直接基类，类B是类C的直接基类，类A是类C的间接基类。类的层次结构也叫做继承链。还是上面的例子，当建立类C的对象时，类A 的构造函数最先被调用，接下来被调用的是类B的构造函数，最后是类C的构造函数。析构函数的调用顺序正好相反。当一个派生类继承有层次的类时，继承链上的 每个派生类必须将它需要的变量传递给它的基类。</p>
<h3>四、公有派生和私有派生</h3>
<p>在继承声明语句中，访问控制关键字用于说明在基类定义中所声明的成员和成员函数能够在多大范围内被派生类所访问。访问控制关键字可为public, private或protected。如果访问控制关键字为public，则称派生类从基类公有继承，也称公有派生。如果访问控制关键字为 private，则称派生类从基类私有继承，也称私有派生。现在笔者将公有继承和私有继承的具体区别列表如下。</p>
<p>通过上表，我们可以将两种派生的特点总结如下：</p>
<table style="border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="100%" bordercolor="#111111">
<tbody>
<tr>
<td width="20%" align="center">基类成员</td>
<td colspan="2" width="40%" align="center">基类private成员</td>
<td colspan="2" width="40%" align="center">基类public成员</td>
</tr>
<tr>
<td width="20%" align="center">派生方式</td>
<td width="20%" align="center">private</td>
<td width="20%" align="center">public</td>
<td width="20%" align="center">private</td>
<td width="20%" align="center">public</td>
</tr>
<tr>
<td width="20%" align="center">派生类成员</td>
<td width="20%" align="center">不可见</td>
<td width="20%" align="center">不可见</td>
<td width="20%" align="center">可见</td>
<td width="20%" align="center">可见</td>
</tr>
<tr>
<td width="20%" align="center">外部函数</td>
<td width="20%" align="center">不可见</td>
<td width="20%" align="center">不可见</td>
<td width="20%" align="center">不可见</td>
<td width="20%" align="center">可见</td>
</tr>
</tbody>
</table>
<p>（1）无论哪种派生方式，基类中的private成员在派生类中都是不可见的。也就是说，基类中的private成员不允许外部函数或派生类中的任何成员访问。</p>
<p>（2）public派生与private派生的不同点在于基类中的public成员在派生类中的访问属性：<br />
public派生时，基类中的public成员相当于派生类中的public成员。<br />
private派生时， 基类中的public成员相当于派生类中的private成员。</p>
<p>因此，private派生确保基类中的方法只能被派生类的对象的方法间接使用，而不能被外部使用。public派生使派生类对象与外部都可以直接使用基类中的方法，除非这些方法已经被重新定义。</p>
<h3>五、保护成员与保护派生</h3>
<p>如果想做到基类成员只由有派生血缘关系的成员访问，而不被无血缘关系的对象成员访问，无论用公有派生还是私有派生都无法做到。因为基类成员中的私有 成员是别的类（包括派生类）成员不能访问的，而基类中的公有成员在public派生时，不仅可以由派生类对象成员访问，也可以由外部函数访问；而在 private派生时，基类中的公有成员虽然允许派生类对象中的成员访问，不允许外部访问，可是再派生出下一级时，由于基类的所有成员已经被私有化，其它 类成员也不可再访问。实现只许有派生血缘关系的对象成员访问的方法，是在基类中使用具有另一种访问属性的成员——protected成员。</p>
<p>protected成员是一种血缘关系内外有别的成员。它对派生对象而言，是公有成员，可以访问；对血缘关系外部而言，与私有成员一样被隐藏。</p>
<p>此外，除了允许使用private与public两种派生方式之外，C++还允许使用protected派生方式。现在将三种访问属性不同的成员经三种派生后在派生类中访问属性的变化情况总结如下表，是对上一表格的增进和补充。</p>
<table style="border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="100%" bordercolor="#111111">
<tbody>
<tr>
<td width="20%" align="center"><strong>派生方式</strong></td>
<td width="20%" align="center">基类的public成员</td>
<td width="20%" align="center">基类的protected成员</td>
<td width="20%" align="center">基类的private成员</td>
<td width="20%" align="center">派生方式引起的访问属性变化概括</td>
</tr>
<tr>
<td width="20%" align="center"><strong>private派生</strong></td>
<td width="20%" align="center">变为private成员</td>
<td width="20%" align="center">变为private成员</td>
<td width="20%" align="center">不可见</td>
<td width="20%" align="center">基类中的非私有成员都成为派生类中的私有成员</td>
</tr>
<tr>
<td width="20%" align="center"><strong>protected派生</strong></td>
<td width="20%" align="center">变为protected成员</td>
<td width="20%" align="center">变为private成员</td>
<td width="20%" align="center">不可见</td>
<td width="20%" align="center">基类中的非私有成员在派生类中的访问属性都降一级</td>
</tr>
<tr>
<td width="20%" align="center"><strong>public派生</strong></td>
<td width="20%" align="center">仍为public成员</td>
<td width="20%" align="center">仍为protected成员</td>
<td width="20%" align="center">不可见</td>
<td width="20%" align="center">基类中的非私有成员在派生类中的访问属性保持不变</td>
</tr>
</tbody>
</table>
<p>需要注意的是，基类的private成员无论经过何种派生，在派生类中都是不可见的。</p>
<h3>六、友元类和友元函数</h3>
<p>（1）友元函数</p>
<p>通常，类的私有成员只能由本类的成员访问，外部函数只能访问类的成员函数，再由成员函数访问类的私有成员。但是，如果在某个类定义中用friend 声明了一个外部函数（也许是其他类的一个成员）后，这个外部函数便可以例外地访问该类的任何私有成员。用friend声明了的外部函数称为这个类的友元函 数。</p>
<p>当友元函数是另一个类的成员函数时，应当注意以下几点：</p>
<p>A：友元函数作为一个类的成员函数时，除应当在它所在的类定义中声明之外，还应当在另一个类中声明它的友元关系，声明语句的格式为：</p>
<p>friend 函数类型 函数所在类名：：函数名（参数列表）；</p>
<p>B：友元函数在引用本类对象的私有成员时无需本类对象的引用参数，但在引用生命它是友元的类的对象中的私有成员时必须有友元类对象的引用参数。</p>
<p>C：一个类的成员函数作另一个类的友元函数时，必须先定义，而不是仅仅声明它。</p>
<p>使用友元函数直接访问对象的私有成员，可以免去再调用类的成员函数所需的开销。同时，友元函数作为类的一个接口，对已经设计好的类，只要增加一条声 明语句，便可以使用外部函数来补充它的功能，或架起不同类对象之间联系的桥梁。然而，它同时也破坏了对象封装与信息隐藏，使用时需要谨慎小心。</p>
<p>（2）友元类</p>
<p>也可以把一个类而不仅仅是一个函数声明为另一个类的友元类。这时，只需先声明它而不一定需要先定义。</p>
<p>应当注意，友元关系是单向的，并且只在两个类之间有效。即使类X是类Y的友元，类Y是否是类X的友元也要看类X中是否有相应的声明。即友元关系不具有交换性。若类X是类Y的友元，类Y是类Z的友元，也不一定就说明类X是类Z的友元，即友元关系也不具有传递性。</p>
<p>当一个类要和另一个类协同工作时，使一个类成为另一个类的友元类是很有用的。这时友元类中的每一个成员函数都成为了对方的友元函数。</p>
<p>摘自:<a href="http://blog.csdn.net/ecitnet/archive/2008/01/23/2060431.aspx" target="_blank">http://blog.csdn.net/ecitnet/archive/2008/01/23/2060431.aspx</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="main(argc,argv) 中的参数(C++/MFC)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2114&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">main(argc,argv) 中的参数(C++/MFC)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++ main()函数及其参数" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2116&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++ main()函数及其参数</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="c语言中的scanf语法" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F6393&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">c语言中的scanf语法</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="C++引用与指针的比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2147&from=http%3A%2F%2Fblog.haohtml.com%2Farchives%2F2110">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">C++引用与指针的比较</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.haohtml.com/archives/2110/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

