??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成网站999久久久综合,久久国产福利免费,国产成人久久精品激情http://www.shnenglu.com/jianc/category/18732.html<script type="text/javascript"> function OnClient(){ var tmp = 1; var tmp2 = 2; var sum = tmp + tmp2; alert(sum); } </script>zh-cnWed, 03 Feb 2016 10:07:22 GMTWed, 03 Feb 2016 10:07:22 GMT60代码自动补全插ghttp://www.shnenglu.com/jianc/archive/2016/01/31/212766.htmljiancjiancSun, 31 Jan 2016 13:21:00 GMThttp://www.shnenglu.com/jianc/archive/2016/01/31/212766.htmlhttp://www.shnenglu.com/jianc/comments/212766.htmlhttp://www.shnenglu.com/jianc/archive/2016/01/31/212766.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/212766.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/212766.htmlVisual Assist
http://www.wholetomato.com/


jianc 2016-01-31 21:21 发表评论
]]>
zeromq?http://www.shnenglu.com/jianc/archive/2012/10/11/193170.htmljiancjiancThu, 11 Oct 2012 07:58:00 GMThttp://www.shnenglu.com/jianc/archive/2012/10/11/193170.htmlhttp://www.shnenglu.com/jianc/comments/193170.htmlhttp://www.shnenglu.com/jianc/archive/2012/10/11/193170.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/193170.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/193170.htmlhttp://www.zeromq.org/
https://github.com/zeromq/libzmq
http://zguide2.zeromq.org/page:all
http://blog.codingnow.com/2011/02/zeromq_message_patterns.html



jianc 2012-10-11 15:58 发表评论
]]>
GDI Plus库用基http://www.shnenglu.com/jianc/archive/2012/05/17/175197.htmljiancjiancThu, 17 May 2012 05:19:00 GMThttp://www.shnenglu.com/jianc/archive/2012/05/17/175197.htmlhttp://www.shnenglu.com/jianc/comments/175197.htmlhttp://www.shnenglu.com/jianc/archive/2012/05/17/175197.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/175197.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/175197.html
配置好库环境? 下面写出使用GDI Plus的基本步?
1.包含头文?br />#include <gdiplus.h>
2.使用名字I间
using namespace Gdiplus;
3.q接必要的导入库文g
#pragma comment(lib, "gdiplus.lib")
4.初始?br />
ULONG_PTR m_gdiplusToken;
GdiplusStartupInput m_gdiplusStartupInput;
GdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);
5.使用GDI Plus?br />6.用完库后, 释放操作
GdiplusShutdown(m_gdiplusToken);


jianc 2012-05-17 13:19 发表评论
]]>
MFC点击DialogH体可拖?/title><link>http://www.shnenglu.com/jianc/archive/2012/05/11/174547.html</link><dc:creator>jianc</dc:creator><author>jianc</author><pubDate>Fri, 11 May 2012 02:59:00 GMT</pubDate><guid>http://www.shnenglu.com/jianc/archive/2012/05/11/174547.html</guid><wfw:comment>http://www.shnenglu.com/jianc/comments/174547.html</wfw:comment><comments>http://www.shnenglu.com/jianc/archive/2012/05/11/174547.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/jianc/comments/commentRss/174547.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jianc/services/trackbacks/174547.html</trackback:ping><description><![CDATA[<div>MFC创徏一个可通过鼠标点击客户区拖动窗口位|的Ҏ<br /><br />通过d消息响应函数<br />afx_msg UINT OnNcHitTest(CPoint point);<br />d?br />ON_WM_NCHITTEST()<br /><br />然后, 定义OnNcHitTest的行为即? OnNcHitTest的代码如?<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">UINT CTimerDlg::OnNcHitTest(CPoint point)<br />{<br />    CRect rect;<br />    GetClientRect(rect);<br />    ClientToScreen(rect);<br /><br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(rect.PtInRect(point))<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> HTCAPTION;<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> CDialog::OnNcHitTest(point);<br />}</span></div><br />首先, 发生WM_NCHITTEST消息的时? E序先取得客户区的窗口矩? q里用到GetClientRectҎ得到, ׃GetClientRect取得的是相对于窗口坐标系l? 但OnNcHitTest的参数point却是相对于屏q的坐标pȝ, 所以这里用CClientToScreen把取到的客户区矩形{成相对于屏幕的坐? 然后用CRectcȝPtInRectҎ判断point是否落在q个矩Ş里面, 如果? 则返回HTCAPTION(q当于q次点击是点L题栏), 所? 可以这h拖动H口? 如果, OnNcHitTest直接q回HTCAPTION的话, 那么, 但用L击非客户区的时? 有些功能会失? 比如点击pȝ的关闭按? 试一下就会发现这个按钮无效了; ok, 如果点击的是非客L, 者直接返回CDialog::OnNcHitTest(point), q就是按默认处理?<br /><br />以上的这个方法比较麻? 其实可以更简单一? 只要先调用父cȝOnNcHitTest(point), 取得q回? 在判断是不是HTCLIENT, 如果? 则返回HTCAPTION, 否则直接q回父类OnNcHitTest(point)的返回值就ok? 修改后如?<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">UINT CTimerDlg::OnNcHitTest(CPoint point)<br />{<br />    UINT uRet </span><span style="color: #000000; ">=</span><span style="color: #000000; "> CDialog::OnNcHitTest(point);<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(HTCLIENT </span><span style="color: #000000; ">==</span><span style="color: #000000; "> uRet)<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> HTCAPTION;<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> uRet;<br />}</span></div><br />再简化一? 成q样?<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">UINT CTimerDlg::OnNcHitTest(CPoint point)<br />{<br />    UINT uRet </span><span style="color: #000000; ">=</span><span style="color: #000000; "> CDialog::OnNcHitTest(point);<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> (HTCLIENT </span><span style="color: #000000; ">==</span><span style="color: #000000; "> uRet) </span><span style="color: #000000; ">?</span><span style="color: #000000; "> HTCAPTION : uRet;<br />}</span></div><br /><br /><br /></div><img src ="http://www.shnenglu.com/jianc/aggbug/174547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jianc/" target="_blank">jianc</a> 2012-05-11 10:59 <a href="http://www.shnenglu.com/jianc/archive/2012/05/11/174547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>可等待计时器内核对象http://www.shnenglu.com/jianc/archive/2012/05/10/174491.htmljiancjiancThu, 10 May 2012 12:38:00 GMThttp://www.shnenglu.com/jianc/archive/2012/05/10/174491.htmlhttp://www.shnenglu.com/jianc/comments/174491.htmlhttp://www.shnenglu.com/jianc/archive/2012/05/10/174491.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/174491.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/174491.html之前学习win32 platform sdk~程的时? 有学C个计时器的东? 那个挺简单的, 是调用SetTimer创徏一个基于某个窗口回调的计时? 既间隔时间ɽH口收到WM_TIMER消息, 或间隔时? 调用我们自己定义的一个回调函?
创徏可等待计时器内核对象, 可以实现cM功能, 现在, 下边l出如何使用可等待计时器内核对象
1.CreateWatchDogTimer
HANDLE CreateWatchDogTimer(
  LPCWSTR pszWatchDogName,
  DWORD dwPeriod,
  DWORD dwWait,
  DWORD dwDfltAction,
  DWORD dwParam,
  DWORD dwFlags
);


2.SetWaitableTimer
BOOL WINAPI SetWaitableTimer(
  __in      HANDLE hTimer,
  __in      
const LARGE_INTEGER* pDueTime,
  __in      LONG lPeriod,
  __in_opt  PTIMERAPCROUTINE pfnCompletionRoutine,
  __in_opt  LPVOID lpArgToCompletionRoutine,
  __in      BOOL fResume
);


CreateWatchDogTimer函数是创徏一个可{待事g内核对象
SetWaitableTimer函数是讄内核对象的触发时间和旉间隔

废话不多说了, q里直接上代?br />
void CDialogDemoDlg::OnBtnCreateTimer()
{
    SYSTEMTIME st;
    st.wYear 
= 2012;
    st.wDay 
= 10;
    st.wDayOfWeek 
= 0;
    st.wHour 
= 20;
    st.wMilliseconds 
= 0;
    st.wMinute 
= 16;
    st.wMonth 
= 5;
    st.wSecond 
= 0;
    
    FILETIME localft;
    FILETIME utc;
    SystemTimeToFileTime(
&st, &localft);
    LocalFileTimeToFileTime(
&localft, &utc);

    LARGE_INTEGER liUTC;
    liUTC.LowPart 
= utc.dwLowDateTime;
    liUTC.HighPart 
= utc.dwHighDateTime;

    m_Timer 
= CreateWaitableTimer(NULL, FALSE, NULL);

    SetWaitableTimer(m_Timer, 
&liUTC, 10 * 1000, NULL, NULL, FALSE);
}

void CDialogDemoDlg::ThreadProc2(CDialogDemoDlg* pDlg)
{
    
while(1)
    {
        DWORD ret 
= WaitForSingleObject(pDlg->m_Timer, INFINITE);
        
if(WAIT_OBJECT_0 == ret)
        {
            AfxMessageBox(
"可等待事件内核对象触?");
        }
    }
}


ThreadProc2是一个线E? 当时间一? WaitForSingleObject׃q回, 因ؓq里创徏的是一个自动复位内核对? 说以WaitForSingleObjectq回是会自动把内核对象复? q里为演C? 写了个死循环, 所? 下一ơ调用WaitForSingleObject? 如果旉未到, U程ȝ会被挂v.
具体用法l节, MSDN
参? windows核心~程

jianc 2012-05-10 20:38 发表评论
]]>
MFC非模态对话框销?/title><link>http://www.shnenglu.com/jianc/archive/2012/05/07/173914.html</link><dc:creator>jianc</dc:creator><author>jianc</author><pubDate>Mon, 07 May 2012 09:00:00 GMT</pubDate><guid>http://www.shnenglu.com/jianc/archive/2012/05/07/173914.html</guid><wfw:comment>http://www.shnenglu.com/jianc/comments/173914.html</wfw:comment><comments>http://www.shnenglu.com/jianc/archive/2012/05/07/173914.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/jianc/comments/commentRss/173914.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jianc/services/trackbacks/173914.html</trackback:ping><description><![CDATA[<div>非模态对话框需要重载OnCanelҎ, q调用DestroyWindow, 且不能调用基cȝOnCanel<br />重蝲PostNcDestroy, 需要delete掉this指针</div><br /><div>// Overrides<br />    // ClassWizard generated virtual function overrides<br />    //{{AFX_VIRTUAL(CDlgTest)<br />    protected:<br />    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support<br />    <span style="color: red;">virtual void PostNcDestroy();</span><br />    //}}AFX_VIRTUAL<br /><br />// Implementation<br />protected:<br /><br />    // Generated message map functions<br />    //{{AFX_MSG(CDlgTest)<br />    <span style="color: red;">virtual void OnOK();</span><br /><span style="color: red;">    virtual void OnCancel();</span><br />    //}}AFX_MSG<br /><br /><br /><div>void CDlgTest::OnOK() <br />{<br />    // TODO: Add extra validation here<br />}<br /><br />void CDlgTest::OnCancel() <br />{<br />    DestroyWindow();<br />}<br /><br />void CDlgTest::PostNcDestroy() <br />{<br />    // TODO: Add your specialized code here and/or call the base class<br />    <br />    CDialog::PostNcDestroy();<br />    delete this;<br />}</div><br /><br /></div><img src ="http://www.shnenglu.com/jianc/aggbug/173914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jianc/" target="_blank">jianc</a> 2012-05-07 17:00 <a href="http://www.shnenglu.com/jianc/archive/2012/05/07/173914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用ATL写COME序http://www.shnenglu.com/jianc/archive/2012/04/29/173106.htmljiancjiancSat, 28 Apr 2012 18:20:00 GMThttp://www.shnenglu.com/jianc/archive/2012/04/29/173106.htmlhttp://www.shnenglu.com/jianc/comments/173106.htmlhttp://www.shnenglu.com/jianc/archive/2012/04/29/173106.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/173106.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/173106.html今天没事, 看了下ATL(Active Template Library), 跟着|上的入门学习资料自q猫画? l果一下子ok? ~译? 在创Z个test工程去调用这个组件的接口函数, 一切顺?
ps:以后用ATL写COMlg, 爽歪?br />ps:有空把COM技术内q看?br />

jianc 2012-04-29 02:20 发表评论
]]>
Dll中开启共享数据段http://www.shnenglu.com/jianc/archive/2012/04/24/172630.htmljiancjiancTue, 24 Apr 2012 09:35:00 GMThttp://www.shnenglu.com/jianc/archive/2012/04/24/172630.htmlhttp://www.shnenglu.com/jianc/comments/172630.htmlhttp://www.shnenglu.com/jianc/archive/2012/04/24/172630.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/172630.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/172630.html
#pragma data_seg(".DataSegName")
int ifoo;
char cfoo[1024= {"test"};
//...
#pragma data_seg()
然后, dll工程里创Z个def文g, def文g写上:
SECTIONS:
    .
DataSegName READ WRITE SHARE
.DataSegName是节表的名? q里的PE文g中创Z个新节表, 然后def文g指明q个节表为共享节? ? q程在加载这个dll文g的时? 对这个节表进行直接映? 而不是映一份拷贝副?br /> q样, ~译好工E后, 但这个dll文g被加载进q程时? 不通进E就可以通过q个׃n数据节表q行通讯?br />
ps:之前用指?br />
#pragma comment(linker, "/section:.DataSegName, RWS")
而不用defx, 但这样却是不能对.DataSegName节进行数据共? 不是很明?br />
q不是对编译的时? llink.exeE序传递一个参数而已?
link /dll /sections:.DataSegName ......

jianc 2012-04-24 17:35 发表评论
]]>
C++Primer MW记19 多承和虚拟l承http://www.shnenglu.com/jianc/archive/2012/03/30/169532.htmljiancjiancFri, 30 Mar 2012 07:49:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/30/169532.htmlhttp://www.shnenglu.com/jianc/comments/169532.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/30/169532.html#Feedback5http://www.shnenglu.com/jianc/comments/commentRss/169532.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/169532.html
1.虚拟l承 --l承了多个基cd? 但只需要一份单独的׃n实例
2.对于一个类的基cȝ数目, c++没有限制(可以多?
   两个基类是最常见? 一个基cd常用于表CZ个共有抽象接? W二个基cL供是有的实现
   从第三个或更多个直接基类l承而来的派生类遵@mixin-based设计风格
3.基类构造函数被调用的顺序以z表中声明的顺序ؓ?/span>
4.在多l承? zcd以从两个或者更多个基类中承同名的成员 --直接讉K是二义的, 导致编译时刻错? 所以要昄指明调用哪个基类的哪个成?Base::member
5.publicz被称为类型?type inheritance) --zcL基类的子cd
   提供了较一般的基类的一U特?/span>
6.privatez被称为实现?implementation hinheritance) --zcM直接支持基类的公有接? 提供了自q公有接口, 重用基类的实?/span>
   private基类放映了一U?qZ子类型关p?的承Ş? 基类的整个公有接口在zcM变成private
7.对于is-a子类型关pL? publicl承是一个很有利的机?/span>
8.has-a关系一般由l合(composition)而不是承来支持 --使一个类UCؓ另一个类的成?/span>
   a:如果我们希望改写一个类的虚拟函? 则必M用私有承而不是用组?/span>
   b:如果我们希望一个类能够引用"一个包含多U可能类型的层次l构"中的一个类, 那么必通过引用使用l合
   c:如果只是希望单的重用实现, 则按值组合比l承更好
   d:如果希望对象的迟~型分配, 按引?使用一个指?l合通常是一个不想的设计选择
9.免除(exempting)个别成员的私有承媄?/span>
   以私有方式? 基类的所有protected和public成员全被l承为子cȝU有成员
   c设计者可以针对基cȝ个别成员, 是其免除非公有派生的影响:
      class CSub: private CBase {
      public:
          using CBase::Member;
      };
   免除个别成员的另一个原因是允许后箋的派生类讉KU有基类的protected成员
   zcd能将l承得到的成员恢复到原来的访问? 该访问别不能比基类中原来指定的U别更严格或更不严格
10.protectedl承 --基类的所有公有成员都成ؓzcȝprotected成员
11.对象l合有两UŞ?/span>
   a:按值组?Composition by value)
   b:按引用组?Composttion by reference)
12.虚拟l承(virtual inheritance) --在虚拟承下, 只有一个共享的基类子对象被l承, 而无基类在派生层ơ中出现多少?/span>
   ׃n的基cd对象被称拟基c?vitual base class)
   在虚拟承下, 基类子对象的复制及由此引L二义性都被取消了
13.虚拟l承的语?
    CSub: public virtual CBase1, public virtual CBase2 {...};
   virtual ?public的顺序不重要




jianc 2012-03-30 15:49 发表评论
]]>
C++Primer MW记18 cȝ承和子类?/title><link>http://www.shnenglu.com/jianc/archive/2012/03/30/169501.html</link><dc:creator>jianc</dc:creator><author>jianc</author><pubDate>Fri, 30 Mar 2012 03:59:00 GMT</pubDate><guid>http://www.shnenglu.com/jianc/archive/2012/03/30/169501.html</guid><wfw:comment>http://www.shnenglu.com/jianc/comments/169501.html</wfw:comment><comments>http://www.shnenglu.com/jianc/archive/2012/03/30/169501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/jianc/comments/commentRss/169501.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jianc/services/trackbacks/169501.html</trackback:ping><description><![CDATA[<span> </span><div><span style="background-color: #ffffff;"></span><span>1.l承(inheritance)</span><br /><span>2.c++通过cL?class derivation)的机制来支持l承</span><br /><span>3.基类(base class)</span><br /><span>4.zc?derived class)</span><br /><span>5.基类和派生类实例的集合称为类l承层次l构(hierarchy)</span><br /><span>6.如果基类和派生类׃n相同的共有接? 则派生类被称做基cȝ子类?subtype)</span><br /><span>7.基类指针或引用可以直接引用其Mz的类, 多?polymorphism)</span><br /><span>8.在运行时刻需要解析出被调用的函数, q个解析q程被称为动态绑?dynamic bindng) --~省情况? 函数实在~译时刻被静态解析的</span><br /><span>9.c++? 通过一U被UCؓ虚拟函数(virtual function)的机制来支持动态绑? 通过集成和动态绑? 子类型多态性ؓ面向对象的程序设计提供了基础</span><br /><span>10.面向对象的程序设计提供了一U方? 把类型解析的负担从程序员的n上{Ud~译器上</span><br /><span>11.cȝ承层ơ结构的主要好处? 我盟可以针对抽象基类的共有接口进E编E? 而不是针对组成承层ơ的个别cd</span><br /><span>    用户代码可以不受语言变化的媄?--多态和动态绑?/span><br /><span>12.在c++? 多态性只存在于子cȝ承层ơ中 --void*型的指针可以被描qCؓ多? 但是语言本nq没有显C的支持他们, 必须q序员自己来管?/span><br /><span>    c++语言通过几种方式支持多态?/span><br /><span>        通过一个隐式{? ?zcL针或引用"转到"其共有基cȝ型的指针或引?</span><br /><span>        通过虚拟函数的机?/span><br /><span>        通过dynamic_cast和typeid操作W?/span><br /><span>            if(SubClass* pSub = dynamic_cast<SubClass*>(pObj)) ...</span><br /><span>13.抽象基类(abstract base class)</span><br /><span>14.实体基类(concrete base class)</span><br /><span>15.U虚拟函?pure virtual function)</span><br /><span>16.覆盖(override)</span><br /><span>17.c++语言为我们提供了一U语法结? 通过它可以指? 一个虚拟函数只是提供了一个可以被子类改写的接?/span><br /><span>18.传递给~省函数的g是在q行时刻军_, 而是在编译时L据被调用函数的对象的cd军_</span><br /><span>19.虚拟析构函数 --主要是ؓ了能够用delete销毁基cȝ时候也能够保证调用zcȝ析构函数, 要不然它只是调用基类的析构函数而已<br /><br /><br /></span></div><img src ="http://www.shnenglu.com/jianc/aggbug/169501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jianc/" target="_blank">jianc</a> 2012-03-30 11:59 <a href="http://www.shnenglu.com/jianc/archive/2012/03/30/169501.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++Primer MW记17 cL?/title><link>http://www.shnenglu.com/jianc/archive/2012/03/29/169443.html</link><dc:creator>jianc</dc:creator><author>jianc</author><pubDate>Thu, 29 Mar 2012 09:20:00 GMT</pubDate><guid>http://www.shnenglu.com/jianc/archive/2012/03/29/169443.html</guid><wfw:comment>http://www.shnenglu.com/jianc/comments/169443.html</wfw:comment><comments>http://www.shnenglu.com/jianc/archive/2012/03/29/169443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/jianc/comments/commentRss/169443.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jianc/services/trackbacks/169443.html</trackback:ping><description><![CDATA[<div><span>1.队列(queue) --专门用于对象集合的数据结? 对象被加入到队列的尾? 而从队列的顶部被删除(first in first out FIFO)</span><br /><span>2.位单个类型提供手工生成的拯是一个无休止的过E? 也是一个无限复杂的l护q程</span><br /><span>3.模板参数?template parameter list) --template<xxx> xxx是模板参数?/span><br /><span>4.模板的类型参?type parameter)由关键字class或关键字typename及其后的表示W构?/span><br /><span>5.每个模板参数前面都必L关键字class或typename</span><br /><span>6.模板非类型参?nontype parameter)׃个普通参数声明构? 一个非cd参数只是该参C表了一个潜在的? 而这个值又代表cL板定义中的一个参?</span><br /><span>    template<class Type, int size = 1024></span><br /><span>    class Buffer;</span><br /><span>    //如果模板实例的名字没有指定Buffer的大? 则实例化Buffer的大是1024</span><br /><span>7.cd转换的过E被UCؓ模板实例?template instantiation)</span><br /><span>    从通用的类模板定义中生成类的过E?/span><br /><span>8.模板参数的缺省?/span><br /><span>    template<class Type = string, int size></span><br /><span>    class Buffer;</span><br /><span>9.cL板成原函数可以再cL板的定义中定? 该成员函数是inline成员函数; 也可以定义在cL板定义之?/span><br /><span>10.c++的模板编译模?template compilation model)</span></div><img src ="http://www.shnenglu.com/jianc/aggbug/169443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jianc/" target="_blank">jianc</a> 2012-03-29 17:20 <a href="http://www.shnenglu.com/jianc/archive/2012/03/29/169443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++Primer MW记16 重蝲操作W和用户定义转换http://www.shnenglu.com/jianc/archive/2012/03/21/168495.htmljiancjiancWed, 21 Mar 2012 06:15:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/21/168495.htmlhttp://www.shnenglu.com/jianc/comments/168495.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/21/168495.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/168495.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/168495.html1.做操作数是该cȝ对象? 才会考虑使用cL员重载操作符
2.c++要求, 赋?=), 下标([]), 调用(()), 和成员访问箭?->)操作W必被定义E类成员操作W? M把这些操作符定义为名字空间成员的定义都会?/span>

标记为编译时刻错?/span>
3.c++预定义可重蝲的操作符:
   + - * / % ^ & | ~
   ! , = < > <= >= ++ --
   << >> == != && || += -= /=
   %= ^= &= |= *= <<= >>= [] ()
   -> ->* new new[] delete delete[]
4.对于内置cd的操作符, 它的预定义意义不能被改变
5.预定义的操作W优先不能被改?/span>
6.除了operator()? 对其他重载操作符提供~省实参都是非法?/span>



jianc 2012-03-21 14:15 发表评论
]]>
C++Primer MW记15 cȝ初始化赋值和析构http://www.shnenglu.com/jianc/archive/2012/03/21/168484.htmljiancjiancWed, 21 Mar 2012 05:04:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/21/168484.htmlhttp://www.shnenglu.com/jianc/comments/168484.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/21/168484.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/168484.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/168484.html
1.~省情况? 用一个类的对象初始化另一个对? 或者向该类另一个对象赋? 都由~省的按成员语义(default memberwise semantics)支持
   在某些情况下, 对类的安全性和处理正确性是不够? 需要类设计者提供特D的拯构造函?copy constructor)和拷贝赋值操作符(copy assignment

operator)的定?/span>
2.newcd?--只有new表达式成功的甌到空间内? 构造函数才会被调用
3.构造函数定义ؓinline? 创徏对象是会在调用点展开构造函?/span>
4.成员初始化列?member initialization list)
5.构造函C能用const或volatile关键字来声明
   一个constcd象在"从其构造函数完成到析构函数开?q段旉内才被认为是const, volatilecd象也一?/span>
6.explicit修饰W通知~译器不要提供隐式{?/span>
   void print(const CTest &test);
   //...
   print("oops");  //q种调用会把"oops"转换成一个CTest对象
   ~省情况? 单参数构造函?或者有多个参数, 除了W一个参数外, 其他都有~省实参)被用作{换符
   无意的隐式类转换, 是很难跟t的错误!, 关键字explicit被引入到标准c++? 以帮助我们抑制这U不受欢q的~译辅助行ؓ
   explicit只能被应用在构造函C
7.~省构造函数是不需要用h定实参就能够被调用的构造函? --q不意味着它不能接受实? 只意味着构造函数的每个参数都有一个缺省g之关?/span>
8.限制对象创徏 --把相x造函数放到非公有讉K区内, 从而限制或昄止某些形式的对创徏动作
   在实际的c++E序? 非公有的构造函C要用处是:
    防止用一个类对象惌cd一个对象做拯
    指出只有当一个类在承层ơ中被用作基c? 而不能直接被应用E序操纵? 构造函数才能被调用
9.拯构造函?--用一个类对象初始化该cȝ另一个对象被UCؓ~省按成员初始化(default memberwise initialization)
   一个类对象惌cȝ另一个对象作拯是通过依次拯每个非静态数据成员来实现
   c设计者可以通过提供Ҏ的拷贝构造函?copy constructor)来改变缺省的行ؓ
   拯构造函C一定是const, 但它却必L引用
10.无论何时, 当在一个函数内删除一个独立的堆对象时, 最好用auto_ptrcd象而不是一个实际的指针
   如果delete表达式失? 如一个异常被抛出, 会到时内存泄?异常抛出, 跌了delete操作?), 不会调用析构函数
   所以徏议用auto_ptr指针
11.对于在堆中分配的cd象数l的元素, 我们没有办法提供一l显C的值来做初始化, 如果l化支持通过new表达式分配数l? 则类必须提供一个缺省的?/span>

造函? 或不提供构造函?/span>
12.用一个类对象初始化另一个类对象, UCؓ按成员初始化(default memberwise initialization)
    发生?用一个类对象昄的初始化另一个对?/span>
           把一个类对象作ؓ实参传递给一个函?/span>
           把一个类对象作ؓ一个函数的q回g递回?/span>
           非空序容器cd的定?/span>
           把一个类对象插入C个容器类型中
13.成员cd象初始化
14.~省按成员赋?default memberwise assignment) --用一个类对象向该cȝ另一个对象的赋值操?/span>
    用隐式的拯赋值操作符
    一般来所, 如果~省的按成员初始化对于一个类不合? 则缺省的按成员赋g不合?/span>
    通过提供一个现实的拯赋值操作符的实? 可以改变~省的按成员赋?/span>
    注意要防止一个类对象向自p?--对于"先释放与该对象当前相关的资源, 以便分配与被拯对象相关资源"q样的拷贝赋值操作符, 拯自n其?/span>

合?/span>
    当一个类对象被赋值给该类的另一个对象是:
        a查该c? 判断是否提供了一个现实的拯赋值操作符
        b如果? 查访问权? 判断是否可以被调?/span>
        c如果不能被调? ~译错误, 否则执行q个调用
        d如果该类没有提供昄的拷贝赋值操作符, 则执行按~省成员赋?/span>
        e在缺省按成员赋g, 每个内置cd或复合类型的数据成员被赋值给相应的成?/span>
        f对于每个cL员对? 递归执行a到f? 知道所有内|或复合cd的数据成员都被赋?/span>
    如果希望完全止按成员拷贝的行文, 操作符声明为privateq且不提供实际定义即?/span>
    一般来? 应该拷贝构造函数和拯赋值操作视Z个个体单?/span>
15.C++语言不能有效地返回一个类对象, q被视ؓc++语言的一个重大缺?/span>
16.c++cd象的初始化L比赋值更有效

 

 



jianc 2012-03-21 13:04 发表评论
]]>
MFC多线E?/title><link>http://www.shnenglu.com/jianc/archive/2012/03/20/168426.html</link><dc:creator>jianc</dc:creator><author>jianc</author><pubDate>Tue, 20 Mar 2012 12:02:00 GMT</pubDate><guid>http://www.shnenglu.com/jianc/archive/2012/03/20/168426.html</guid><wfw:comment>http://www.shnenglu.com/jianc/comments/168426.html</wfw:comment><comments>http://www.shnenglu.com/jianc/archive/2012/03/20/168426.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/jianc/comments/commentRss/168426.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jianc/services/trackbacks/168426.html</trackback:ping><description><![CDATA[<p><span>mfc下多U程~程</span></p> <p><span>1.mfc支持两种U程</span><br /> <span>   用户界面U程</span><br /> <span>   工作U程</span><br /> <span>2.mfc中所有线E都是由CWinThread对象表示</span><br /> <span>    CWinThread是用h口线E的基类, CWinApp是从CWinThreadz出来?/span><br /> <span style="background-color: transparent;">    在写用户接口U程? 也要从CWinThreadcL生出自己的线E类</span><br /> <span>    可以调用AfxBeginThread函数, 会创建CWinThread对象</span><br /> <span>3.~写是想工作U程的控制函? 控制函数的原?</span><br /> <span>    UINT ControlFunctionName(LPVOID pParam); //U程回调</span><br /> <span>4.U程调用AfxBeginThread函数可以创建新的线E?/span><br /> <span>5.创徏q启动工作线E?</span><br /> <span>    CWinThread* AfxBeginThread(</span><br /> <span>        AFX_THREADPROC pfnThreadProc,</span><br /> <span>        LPVOID pParam,</span><br /> <span>        int nPriority = THREAD_PRIORITY_NORMAL,</span><br /> <span>        UINT nStackSize = 0,</span><br /> <span>        WORD dwCreateFlags = 0,</span><br /> <span>        LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);</span><br /> <span>6.AfxEndThreadl止U程</span><br /> <span>7.创徏用户界面U程</span><br /> <span>    从CWinThreadcL生出自己的线E类</span><br /> <span>    攚w这个类</span><br /> <span>    启动用户界面</span><br /> <span>8.基类的一些成员函?</span><br /> <span>    ExitInstance, 当线E退出是, 会调用执行清理工?/span><br /> <span>    InitInstance, 执行U程cd例初始化, 子类必须重写</span><br /> <span>    OnIdle, 执行U程特定I闲旉处理</span><br /> <span>    PreTranslateMessage, qo消息</span><br /> <span>    Run, 执行U程函数</span><br /> <span>9.AfxBeginThread函数的另一个重载原?(界面U程)</span><br /> <span>    CWinThread* AfxBeginThread(</span><br /> <span>        CRuntimeClass* pThreadClass,  //用RUNTIME_CLASS宏将U程cL针{换ؓ指向CRuntimeClass对象指针</span><br /> <span>        int nPriority = THREAD_PRIORITY_NORMAL,</span><br /> <span>        UINT nStackSize = 0;</span><br /> <span>        DWORD dwCreateFlags = 0,</span><br /> <span>        LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL</span><br /> <span>    );</span><br /> <span>10.l止U程</span><br /> <span>    正常l止U程 VOID PostQuitMessage(int nExitCode);</span><br /> <span>    提前l止U程 在线E内调用AfxEndThread函数 VOID AfxEndThread(UINT nExitCode);</span><br /> <span>11.U程同步技?/span><br /> <span>    信号?--限制使用׃n资源的线E数?/span><br /> <span>        CSemaphore g_Sem(5, 5); 旉内最多只?个线E能׃n资源, q初始开始时没有U程获得信号资源</span><br /> <span>            一旦线E访问共享资? 信号量计数器减1, 若变?, 则下来对资源的访问就会被拒绝, 知道持有的资源线E释放了资源的持有权</span><br /> <span>    互斥对象 --内核对象</span><br /> <span>    临界?--用户模式对象 弄不好就Ҏ出现死锁, 不过用v来很? 只有4个API</span><br /> <span>        InitializeCriticalSection, EterCreiticalSection, LeveCriticalSection, DeleteCriticalSection</span><br /> <span>    事g对象 --内核对象 分收工重|对象和自动重置对象</span></p> <p><font style="background-color: #cce8cf" color="#000000" face="Verdana"></font> </p> <p><font style="background-color: #cce8cf" color="#000000" face="Verdana"><br /> </font> </p><img src ="http://www.shnenglu.com/jianc/aggbug/168426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jianc/" target="_blank">jianc</a> 2012-03-20 20:02 <a href="http://www.shnenglu.com/jianc/archive/2012/03/20/168426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++Primer MW记14 c?/title><link>http://www.shnenglu.com/jianc/archive/2012/03/13/167774.html</link><dc:creator>jianc</dc:creator><author>jianc</author><pubDate>Tue, 13 Mar 2012 06:20:00 GMT</pubDate><guid>http://www.shnenglu.com/jianc/archive/2012/03/13/167774.html</guid><wfw:comment>http://www.shnenglu.com/jianc/comments/167774.html</wfw:comment><comments>http://www.shnenglu.com/jianc/archive/2012/03/13/167774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/jianc/comments/commentRss/167774.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jianc/services/trackbacks/167774.html</trackback:ping><description><![CDATA[<p><span>1.c++c?--用户定义的类?user-defined type, UDT)</span><br /> <span>2.信息隐藏(information hiding)</span><br /> <span>3.除了静态数据成员外, 数据成员不能在类中被昄地初始化</span><br /> <span>4.一个成员函数只能重载自q的其他成员函?/span><br /> <span>5.数据隐藏的优?</span><br /> <span>    如果数据的访问属性是U有? 则一般除了类的共有接? 不能直接讉KU有成员</span><br /> <span>    如果数据的访问属性是共有? 则Q何地斚w可以直接讉Kq个数据成员</span><br /> <span>    但是, 如果cȝ实现变动? 即那个成员改变了, 那么, 如果q个成员是私有的, 但共有接口没改变, 则不需要修改用这个类的代?/span><br /> <span>    如果q个成员是共有的, 那么, 直接讉Kq个成员的Q何代码都需要做相应的改变了</span><br /> <span>    --所? 数据装性自有它的优?/span><br /> <span>6.讉K限定W?access specifier) public, private, protected</span><br /> <span>7.在某些情况下, 允许某个函数而不是整个程序可以访问类的私有成? q样做会比较方便, 友元(friend)机制允许一个类授权其他的函数访问他的非公有</span><br /> <span>成员</span><br /> <span>8.友元声明以关键字friend开? 只能出现在类的声明中</span><br /> <span>9.因ؓ只有当一个类的类体已l完整时, 它才被视为已l被定义, 所以一个类不能有自w类型的数据成员, 但可以用指向自ncd的指针或引用作ؓ数据?/span></p> <p><span>?/span><br /> <span>10.cȝ定义不会引v存储区分? 只有当定义一个类的对象时, pȝ才会分配存储?/span><br /> <span>11.每个cL员函数的拯只有一?/span><br /> <span>12.把一个成员函数声明ؓconst可以保证q个成员函数不修改类的数据成? 但是, 如果该类含有指针, 那么在const成员函数中就能修Ҏ针所指的对象, </span></font></p> <p><span>~译器不会检ؓ错误, q常oc++初学者吃?/span><br /> <span>13.Z允许修改一个类的数据成? 即它是一个const对象的数据成? 我们也可以把Ҏ据成员声明ؓmutable(易变?. mutable数据成员永远不会?/span></p> <p><span>const成员, mutable成员中可以被更新</span><br /> <span>14.每个cL员函数都含有一个指向被调用对象的指? q个指针被称为this:</span><br /> <span>    在非const成员函数? 它的cd是指向该cȝ型的指针</span><br /> <span>    在const成员函数? 是指向constcȝ型的指针</span><br /> <span>    在volatile成员函数? 是指向volatilecȝ型的指针</span><br /> <span>15.cȝ静态成员被当做该类cd的全局对象, 对于非静态成? 每个cd象都有自q拯, 而静态数据成员对每个cȝ型只有一个拷? 静态数据成员只</span></p> <p><span>有一? 该类cdҎ有对象共享访?/span><br /> <span>16.同全局对象相比, 使用静态数据成员有两个优势:</span><br /> <span>    静态数据成员没有进入程序的全局名字I间</span><br /> <span>    可以实现信息隐藏, 静态成员可以是private成员, 而全局对象不能</span><br /> <span>17.静态数据成员的cd可以是其他所属类, 而非static数据成员只能被声明ؓ该类的对象的指针或引?/span><br /> <span>18.静态数据成员可以被作ؓcL员函数的~省实参, 而非static成员不能</span><br /> <span>19.静态成员函数的声明除了在类体中的函数声明加上关键字static, 以及不能声明为const或volatile之外, 与非静态成员函数相? 出现在类体外的函?/span></p> <p><span>定义不能指定关键字static</span><br /> <span>20.静态成员没有this指针</span><br /> <span>21.cL员的指针必须L通过特定的对象或指向该类cd的对象的指针来访?/span><br /> <span>    针对cd象和引用?*</span><br /> <span>    针对指向cd象的指针?>*</span><br /> <span>22.定义一个成员函数指针需要制定函数返回类? 参数表和c?</span><br /> <span>    int (CTest::*)();</span><br /> <span>    int (CTest::*pmf)() = &CTest::test;</span><br /> <span>    pmf = &CTest::test2;</span><br /> <span>23.静态类成员属于该类的全局对象和函?/span><br /> <span>24.联合:一U节省空间的c?/span><br /> <span>    使用union是危险的, 通过一个不适当的数据成员以为的获取到当前存储在union中的值]</span><br /> <span>25.c++标准库提供了一个bitsetcL? 它可以辅助操作位的集? 在可能的情况? 应尽可能使用它来取代位域</span><br /> <span>26.一个类可以在另一个类中定? q样的类被称为嵌套类(nested class)</span><br /> <span>    嵌套cL其外围类的一个成?/span><br /> <span>27.cM可以定义在函C? q样的类被称为局部类(local class)</span><br /> <span>    局部类的成员函数必被定义在类定义? q就把局部类的成员函数的复杂性限制在几行代码?/span><br /> <br /> <br /> </p><img src ="http://www.shnenglu.com/jianc/aggbug/167774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jianc/" target="_blank">jianc</a> 2012-03-13 14:20 <a href="http://www.shnenglu.com/jianc/archive/2012/03/13/167774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++Primer MW记13 泛型法http://www.shnenglu.com/jianc/archive/2012/03/13/167758.htmljiancjiancTue, 13 Mar 2012 01:45:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/13/167758.htmlhttp://www.shnenglu.com/jianc/comments/167758.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/13/167758.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167758.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167758.html1.copy() 法把一堆iterator当做前两个实? 用它们标记出要拷贝的元素范围, W三个实参是一个iterator, 它标C被拷贝元素将要放|的起始位置, back_inserter被称为iterator适配? 它得元素被插入C为实参的vector的尾?/span>
2.unique()随然L了容器中的重复? 但是只去掉相ȝ重复? 因此可以先对容器q行sort()排序


jianc 2012-03-13 09:45 发表评论
]]>
C++Primer MW记12 异常处理http://www.shnenglu.com/jianc/archive/2012/03/12/167709.htmljiancjiancMon, 12 Mar 2012 03:55:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/12/167709.htmlhttp://www.shnenglu.com/jianc/comments/167709.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/12/167709.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167709.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167709.html1.c++的异常处理机制被UCؓ不可恢复?nonresumptive)
2.栈展开(stack unwinding)
    如果扑ֈ一个catch子句, 则该异常被处? 如果没有扑ֈcatch子句, 则在主调函数l箋查找
    q个q程沿着潜逃函数调用链向上l箋, 直到扑ֈ该异常的catch子句.
3.重新抛出(rethow)
    throw; //rethrow语句只能出现在catch子句飞复合语句中
    被抛出的异常是原来的异常对?br />4.把catch子句中的异常对象声明为引? 免去了对象的内存拯, 又可以确保应用在catch子句中的异常对象上的修改操作, 能够反映到被重新抛出的异?/p>

对象?br />5.catch-all
    try {
        ....
    }
    catch(...) {} //catch-all格式
6.catch子句被检查的序与它们在try块之后出现的序相同, 一旦找C一个匹? 则后l的catch子句不再检?br />7.异常规范(exception specification)
    void foo() throw(Object); //q种声明是异常规范
    异常声明是函数接口的一部分
8.异常规范不允讔R被抛出的异常cd到异常规范制定的cd之间的{?
    void foo() throw(string) {
        ....
        throw "exception";  //不允总const char* 到string的{? 此时调用unexpected()
        throw string("exception"); //可以
    }





jianc 2012-03-12 11:55 发表评论
]]>
C++Primer MW记11 函数模板http://www.shnenglu.com/jianc/archive/2012/03/12/167706.htmljiancjiancMon, 12 Mar 2012 02:55:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/12/167706.htmlhttp://www.shnenglu.com/jianc/comments/167706.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/12/167706.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167706.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167706.html1.关键字templateL攑֜模板的定义与声明的最前面, 后面是用逗号分隔的模板参数列?template parameter list), 参数表不能ؓI?/span>
2.模板非类型参数是׃个普通的参数声明构成, 代表一个潜在的?
    template <typename Type, int size>
    Type min(Type (&arr)[size]);
    //当函数模板min()被实例化? size的g被一个编译时d知的帔Rg?/span>
3.cd和值的替换q程被称为模板的实例?template instantiation)
4.c++支持两种模板~译模式:
    包含模式(Inclusion Model)
    分离模式(Separation Model)

    包含~译模式? 在每个模板被实例化的文g中包含函数模板的定义, q且往往把定义放在头文g? 向对内联函数左那?/span>
    --~点: 函数模板?body)描述了实现细?/span>
    分离~译模式? 函数模板声明攑֜头文件中, 函数模板定义攑֜cpp文g?/span>

    //.h
    template <typename Type> Type min(Type t1, Type t2);

    //.cpp
    export template <typename Type>
    Type min(Type t1, Type t2) { /* ... */ }

    //关键?export! 可导出的模板
    //q不是所有的~译器都支持分离模式



jianc 2012-03-12 10:55 发表评论
]]>
xl习http://www.shnenglu.com/jianc/archive/2012/03/09/167484.htmljiancjiancFri, 09 Mar 2012 05:53:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/09/167484.htmlhttp://www.shnenglu.com/jianc/comments/167484.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/09/167484.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167484.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167484.html

stl 扑և数组的最?

#include <iostream>
#include 
<string>
#include 
<algorithm>
#include 
<vector>
using namespace std;

template
<typename Type, int size>
Type getMin(
const Type (&arr)[size])
{
    cout 
<< "Size:" << size <<endl;
    vector
<Type> vec(arr, arr + size);
    sort(vec.begin(), vec.end());
    
return vec[0];
}


int main(int argc, char *argv[])
{
    
int arr[] = {4-3245343};

    cout 
<< getMin(arr) < <endl;
    
    
return 0;
}


stl删除重复数据

 

#include <iostream>
#include 
<vector>
#include 
<algorithm>
#include 
<iterator>
using namespace std;

template
<typename Type>
void display(const vector<Type>& vec)
{
    vector
<Type>::const_iterator iter = vec.begin();
    
while(iter != vec.end())
    {
        cout 
<< *iter <<" ";
        iter
++;
    }
    cout 
<<endl;
}

int main(int argc, char *argv[])
{
    
const int Len = 12;
    
int arr[Len] = {223212345456};
    vector
<int> vec(arr, arr + Len);

    sort(vec.begin(), vec.end());

    display(vec);

    vector
<int>::iterator iterBegin = vec.begin();
    vector
<int>::iterator iterEnd = unique(vec.begin(), vec.end());    //L重复?/span>

    display(vec);

    
while(iterBegin != iterEnd)
    {
        cout 
<< *iterBegin << " ";
        iterBegin
++;
    }
    cout 
<<endl;


    
return 0;
}

 

map字符?/h3>

 

#include <string>
#include 
<map>
#include 
<algorithm>
#include 
<iostream>
using namespace std;

int main(int argc, char *argv[])
{
    map
<charint> mObj;

    
string str;
    cin 
>> str;

    
for(int i = 0; i < str.size(); ++i)
    {
        
if(mObj.count(str[i]))
            mObj[str[i]]
++;
        
else
            mObj.insert(map
<charint>::value_type(str[i], 1));
    }
    
    map
<charint>::iterator iter = mObj.begin();
    
while(iter != mObj.end())
    {
        cout 
<< iter->first << ":" <<iter->second <<endl;
        
++iter;
    }

    
return 0;
}

 



jianc 2012-03-09 13:53 发表评论
]]>C++Primer MW记10 函数重蝲(待更?http://www.shnenglu.com/jianc/archive/2012/03/09/167474.htmljiancjiancFri, 09 Mar 2012 03:59:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/09/167474.htmlhttp://www.shnenglu.com/jianc/comments/167474.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/09/167474.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167474.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167474.html2.链接提示Wextern "C"只能指定重蝲函数集中的一个函?br />    --因ؓ重蝲函数? 需要c++的名字改~功? 才能区分不同的函? 而extern "C"是指明了不要q行名字改编
//其他l节回头再看






jianc 2012-03-09 11:59 发表评论
]]>
C++Primer MW记9 域和生命?/title><link>http://www.shnenglu.com/jianc/archive/2012/03/09/167473.html</link><dc:creator>jianc</dc:creator><author>jianc</author><pubDate>Fri, 09 Mar 2012 03:40:00 GMT</pubDate><guid>http://www.shnenglu.com/jianc/archive/2012/03/09/167473.html</guid><wfw:comment>http://www.shnenglu.com/jianc/comments/167473.html</wfw:comment><comments>http://www.shnenglu.com/jianc/archive/2012/03/09/167473.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/jianc/comments/commentRss/167473.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jianc/services/trackbacks/167473.html</trackback:ping><description><![CDATA[<p>1.上下?context)<br /> 2. 全局域内的函数声明将引入全局函数(global function)<br /> 3.全局域内的变量将引入全局对象(global object)<br /> 4.生命?lifetime)<br /> 5.函数声明(declaration) 指定了该函数的名字以及函数的q回cd和参数列?br /> 6.函数定义(definition)qؓ函数提供了函C<br /> 7.extern为声明但不定义一个对象提供了一U方? --承诺了该对象会在其他地方被定?br />     extern 声明不会引v内存被分?br /> 8.c++中有一U机? 通过它可以把函数参数的类型和数目~码在函数名? Ҏ制叫做类型安全链?type-safe-linkage)<br /> 9.不同文g中出现同一对象或函数声明的其他cd不匹配情? 在编译或链接时可能不会被捕捉? 因ؓ~译器一ơ只能处理一个文? 他不能很Ҏ地检</p> <p>查到文g之间的类型违? q些cdq例可能是程序严重错误的Ҏ<br /> 10.头文件ؓ所向extern对象声明, 函数声明以及inline函数定义提供了一个集中的位置: q被UC声明的局部化(localization)<br /> 11.头文件提供了两个安全保证<br />     保证所有文仉包含同一个全局对象或函数的同一份声?br />     如果需要修改声? 则只需要改变一个头文g<br />     --只在本cpp用的全局函数, 该不该定义在头文仉?<br /> 12.局部对?local object)<br />    自动对象(automatic object)  --E序q行?br />    寄存器对?register object) --如果所选择的变量被频繁使用, 则寄存器变量可以提高函数的执行速度<br />    局部静态对?local static object)<br /> 13.当一个自动变量的地址呗存储在一个生命期长与它的指针? 该指针被UCؓI悬指针(dangling pointer)<br /> 14.动态分配的对象被分配在E序的空闲存储区(free store)的可用内存池?br /> 15.new表达式失败时, 通常会抛出bad_alloc异常<br /> 16.应用delete表达式失? 使内存无法返回空闲存储区, UC内存泄露(memory leak)<br /> 17.对用一内存应用了两ơdelete表达? 通常发生在两个指针指向同一个动态分配对象的时? q是一个很难跟t的问题<br /> 18.在对象被释放后读写该对象, q常怼发生, 因ؓdelete表达式应用的指针没有被设|ؓ0<br /> 19.为帮助程序员更好地管理动态分配的内存, c++库提供了auto_ptrcȝ型的支持 --指针<br /> 20.auto_ptrcL板头文g<memory><br />     auto_ptr<int>pi(new int(1024));<br />     //pi是局部智能指? 当pi生命期结束时? 会自动释放pi指向的堆I间<br />     Z判断auto_ptr对象是否指向了一个对? 可以用操作get()q回auto_ptr对象内部的底层指?br />     if(p_auto_int.get() != 0 && *p_auto_int != 1024) { ... }<br /> 21.在某些情况下, 细节会U聚成可怕的性能瓉, q些l节不应该烦扰那些试图ؓ整个E序提供解决Ҏ的h, 但是q些l节是有l验的程序员应该考虑<br /> ?br /> 22.定位new表达?br />     new表达式可以允许程序员要求对象创建在已经被分配好的内存中, q种形式的new表达式被UCؓ定位new表达?placement new expression)<br />     new (place_address) type -specifier<br />     place_address必须是个指针<br />     头文?lt;new><br />     byte *mem = new byte[4096]; //q个是自定义内存?<br />     char *tmp = new(mem) char; //在内存池分配一个char来用?<br />     delete [] mem;</p> <img src ="http://www.shnenglu.com/jianc/aggbug/167473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jianc/" target="_blank">jianc</a> 2012-03-09 11:40 <a href="http://www.shnenglu.com/jianc/archive/2012/03/09/167473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++Primer MW记8 函数http://www.shnenglu.com/jianc/archive/2012/03/08/167436.htmljiancjiancThu, 08 Mar 2012 12:22:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/08/167436.htmlhttp://www.shnenglu.com/jianc/comments/167436.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/08/167436.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167436.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167436.html 2.按g?pass-by-value)
3.某些情况? ~译器自动将按D回{换到按引用返? 该优化称为命名返回g?named return value optimization)
4.直接或间接调用自q函数被称为递归函数(recursive function)
5.inline指示对编译器来说只是一个徏? ~译器可以选择忽略该徏?br />








jianc 2012-03-08 20:22 发表评论
]]>
C++Primer MW记7 抽象容器cdhttp://www.shnenglu.com/jianc/archive/2012/03/08/167416.htmljiancjiancThu, 08 Mar 2012 09:06:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/08/167416.htmlhttp://www.shnenglu.com/jianc/comments/167416.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/08/167416.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167416.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167416.html1.序容器(sequence container) --拥有由单一cd元素l成的一个有序集?br />    list, vector, deque
2.兌容器(associative container) --支持查询一个元素是否存? q且可以有效地获取元?br />    map, set, multimap, multiset
3.容器的容?--在容器下一ơ需要增长自׃前能够被加入到容器中的元素的L(定w只与q箋存储的容器相?vector, deque, string. 而list不要?/p>

定w)
4.capacity()操作 --求一个容器的定w
5.容器的长?--容器当前拥有元素的个?br /> 6.size()操作 --求一个容器的长度
7.数据cd复? vector的效率就低
8.reserve()操作 --允许E序员将容器的容量设|成一个现实指定的?br /> 9.q代?iterator) --提供了一U一般化的方? 寚w序或兌容器cd中的每个元素q行q箋讉K
10.每个容器cd都提供了一个begin()和一个end()成员函数
11.begin()q回一个iterator, 指向容器的第一个元?br /> 12.end()q回一个iterator, 指向容器的末元素的下一个位|?br /> 13.Ziteratorcd, 每个容器q定义了一个const iteratorcd, 对于遍历const容器是必需?br /> 14.iterator术论算只适用于vector或deque, 而不适用与list, 因ؓielist的元素在内存中不是连l存储的
15.string.find_first_of()查找与被搜烦字符串中L一个字W相匚w的第一ơ出? q返回它的烦引位|?br /> 16.string.substr()生成string对象的字串的一个拷?br /> 17.string.rfind()查找最后的指定字串出现的烦?br /> 18.string.find_first_not_of()查找W一个不与要搜烦字符串的L字符相匹配的字符
19.string.find_last_of()查找字符串中?与搜索字W串L元素相匹?的最后一个字W?br /> 20.string.find_last_not_of()查找字符串中?与搜索字W串L字符全不匚w"的最后一个字W?br /> 21.string.erase(pos, num)操作L字符串中的指定串, pos表示位置, num表示L的长?br /> 22.<locale>ctypec? {了标准c库函数的功能及一l非成员函数
23.string.compare(pos, num, str); 比较pos位置的后面num个字W是否ؓstr
24.string.insert(pos, newstring); pos表示要插入的位置, newstring表示要插入的字符?br /> 25.string.assign(); 字符串拷?br /> 26.string.append(); 字符串拼?br /> 27.string.swap(); 交换两个字符?br /> 28.string.at(); 对字W的下标索引操作, 有对索引D围检? 下标界时抛出out_of_range异常
   try {
      char ch = st.at(index);
   } catch(std::out_of_range) { ... }
29.string.replace(pos, num, newstring); 用newstring代替pos后面num个字W子?br /> 30.map 也叫兌数组(associative array) ?值对 key/value
    键用来烦引map, 值用作存储和索的数据
    map对象定义, 臛_要指明键和值的cd, ?
    map<string, int> word_count;
31.map的数据录?br />     map<string, string> str_str;
    str_str[string("one")] = string("1"); //q种效率比较?br />     str_str.insert(
        map<string, string>::value_type("two", "2")
    );  //q种效率?br /> 32.查找q获取map中的元素
    最单的Ҏ:
    value = mapObj[key];
    但这h个问? 如果不存在keyq个? mapObj׃插入key? q把对应的valuegؓ默认? q样得到的value是无效的
    所? 应该q样?br />     if(mapObj.count(key))
        value = mapObj[key];
    或者这?
    map<keyType, valueType>::iterator iter = mapObj.find(key);
    if(iter != mapObj.end())
      value = mapObj[key];
33.从map中删除元?br />     erase操作
    mapObj.erase(key);
    q有两种重蝲方式, 详见文

    mapObj.clear(); 清空map对象所有?br />

34.set对象插入元素
    #include <set>
    set<setType> setObj;
    setObj.insert(key);
35.set对象查找元素
    setObj.count(key); //1? 0没有
    setObj.find(key); iter为setObj.end()表示没有
36.multiset和multimap允许要被存储的键出现多次
    对于multiset和multimap的P代策略是联合使用findq回的iterator和countq回的?
    count = mulsetObj.count();
    multiset<type>::iterator iter;
    iter = mulsetObj.find(key);
    for(int i = 0; i < count; ++i, ++iter)
        do_something(*iter);
    另一U方法是使用equal_range()q回的iterator?br />     如果q个值存? 则第一个iterator指向该值的W一个实? 且第二个iterator指向q个值的最后一个实例的下一个位|?
    switch(mulmapObj.count) {
    case 0: break; //不存?br />     case 1: //只有一? 用普通的find操作
        multimap<keyType, valueType>::iterator iter;
        iter = mulmapObj.find(key);
        do_something(*iter);
        break;
    default: //有许多项
        typedef multimap<keyType, valueType>::iterator it;
        pair<it, it>pos;
        pos = mulmapObj.equal_range(key);
        for(; pos.first != pos.second; pos.first++)
            do_somethine(*pos.first);
    }
    //对应? 删除的话用mulmapObj.erase(pos.first, pos.second);
    //不支持下标操作是讉Kmultimap元素的一个限?
    mulmapObj[key]; //错误
37.栈容?stack container)支持的操?//头文?lt;stack>
   empty()
   size()
   pop()
   top()
   push(item)
38.栈类型被UCؓ容器适配?container adapter)
39.~省情况? 栈用容器cddeque实现, 改变q个~省值可以这?
    stack<type, list<type>> stackObj; //Ҏ用容器类型list实现
    //一般是定义一个指针栈
    class CTest;
    stack<CTest*> ctestStack;
40.标准库提供了两种风格的队? queue(队列), priority_queue(优先U队?
    头文?<queue>
41.queue和priority_queue操作
   empty()
   size()
   pos()
   front() //只能用在一般队?br />    back() //只能用在一般队?br />    top()  //只能用在优先U队?br />    push(item)



jianc 2012-03-08 17:06 发表评论
]]>
C++Primer MW记6 语句http://www.shnenglu.com/jianc/archive/2012/03/07/167328.htmljiancjiancWed, 07 Mar 2012 09:00:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/07/167328.htmlhttp://www.shnenglu.com/jianc/comments/167328.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/07/167328.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167328.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167328.html 2.故意省略break的case标签应该提供一条注? 以指明这U省略是故意?br /> 3.isalpha() 标准c?判断一个字W是否ؓ一个英文字?--头文?ctype.h







jianc 2012-03-07 17:00 发表评论
]]>
C++Primer MW记5 表达?/title><link>http://www.shnenglu.com/jianc/archive/2012/03/07/167321.html</link><dc:creator>jianc</dc:creator><author>jianc</author><pubDate>Wed, 07 Mar 2012 07:45:00 GMT</pubDate><guid>http://www.shnenglu.com/jianc/archive/2012/03/07/167321.html</guid><wfw:comment>http://www.shnenglu.com/jianc/comments/167321.html</wfw:comment><comments>http://www.shnenglu.com/jianc/archive/2012/03/07/167321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/jianc/comments/commentRss/167321.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jianc/services/trackbacks/167321.html</trackback:ping><description><![CDATA[<p>1.昄cd转换(explicit conversion)<br />2.强制cd转换(cast)<br />3.c++ limits提供了与内置cd表示有关的信?br />4.pȝ为每个程序都提供了一个在E序执行时可用的内存?I闲存储区free store 或堆 heap)<br />5.动态内存分?dynamic memory allocation)<br />6.bitset操作<br />   test(pos) pos位是否ؓ1?<br />   any() L位是否ؓ1?<br />   none() 是否没有位ؓ1?<br />   count() 值是1的个?br />   size() 位元素的个数<br />   [pos] 讉Kpos?br />   flip() {所有位<br />   flip(pos) {pos?br />   set() 所有位|?<br />   set(pos) pos位置1<br />   reset() 所有位|?<br />   reset() pos位置0</p> <p>   bitset操作头文?<bitset><br />7.bitset?U声明方?<br />   bitset<32>bitvec;<br />   bitset<32>bitvec(0xffff);<br />   bitset<32>bitvec("101010");<br />8.bitset转成string对象:<br />   bit.to_string();<br />9.bitset转成unsigned long型整?br />   bit.to_ulong();<br />10.昄cd转换<br />   static_cast<br />   dynamic_cast<br />   const_cast<br />   reinterpret_cast<br />   虽然有时候确实需要强制类型{? 但是它们也是E序错误的源?<br />11.M非const数据cd的指针都可以被赋值给void*型的指针<br />   void*型的指针被称为泛?generic)指针<br />   void*型指针不能直接被解除引用<br />12.const_cast 转换D辑ּ的常量?以及volatile对象的volatile?<br />13.~译器隐式执行的Mcd转换都可以由static_cast昄完成<br />14.dynamic_cast支持在运行时刻识别有指针或引用的cd?/p><img src ="http://www.shnenglu.com/jianc/aggbug/167321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jianc/" target="_blank">jianc</a> 2012-03-07 15:45 <a href="http://www.shnenglu.com/jianc/archive/2012/03/07/167321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++Primer MW记4 C++数据cdhttp://www.shnenglu.com/jianc/archive/2012/03/07/167310.htmljiancjiancWed, 07 Mar 2012 05:09:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/07/167310.htmlhttp://www.shnenglu.com/jianc/comments/167310.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/07/167310.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167310.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167310.html 2.文字帔R是不可寻址?nonaddressable)
3.c++关键? asm, auto, bool, breek, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast
    else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator
    private, protected, public, register, renterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch,
    template, union, unsigned, using, virtual, void, volatile, wchar_t, while
4.全局?global scope)
5.replace用法: replace(string.begin(), string.end(), 'a', 'b'); //把string里的a替换成b
6.数(magic number) --重要性在上下文中没有体现出来
7.c++不支持在枚D成员之间的前后移?br /> 8.vectorcMؓ内置的数l提供了一U代替表C?br /> 9.vector有两U不同Ş? 数组习惯; stl习惯
10.size()查询vector大小
11.empty()试vector是否为空
12.push_back()在vector后面插入一个元?br /> 13.volatile --~译器执行的某些例行优化行ؓ不能应用在已指定为volatile的对象上
14.paircd --把相同类型或不同cd的两个值关联v?br />    头文?lt;utility>
   pair<string, string> author("abc", "def");
   pair的成员访问符 first second

jianc 2012-03-07 13:09 发表评论
]]>
C++Primer MW记3 C++览http://www.shnenglu.com/jianc/archive/2012/03/06/167252.htmljiancjiancTue, 06 Mar 2012 08:52:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/06/167252.htmlhttp://www.shnenglu.com/jianc/comments/167252.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/06/167252.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167252.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167252.html 2.静态内存分配是在程序执行之前进行的, 效率比较? 但缺灵zL?br /> 3.动态内存分配是在程序执行之后进行的, 效率比较? 但灵zL高
4.内存泄露(memory leak) --有相应识别内存泄露的工具
5.成员讉K操作W?member access operator)
6.公有成员提供了类的公有接?public interface) --实现了这个类的行为的集合
7.U有成员提供U有实现代码(private implementation) --存储信息的数?br /> 8.cȝ公共接口与私有实C码的分离 --UCؓ信息隐藏
9.信息隐藏的好? 化类功能的修改于扩展, 方便错误的检?br /> 10.内联函数(inline function) 在调用点上展开
11.函数重蝲(function overloading)
12.cd操作W?class scope operator) --cd::
13.域操作符(scope operator) --::
14.局?local scope)
15.拯构造函?copy constructor)
16. cd object;
    cd obj1 = object; --调用拯构造函?br />     cd obj2(object); --调用拯构造函?br /> 17.引用(reference)
18.析构成员函数(destructor member function)
19.操作W重?operator overloading)
20.基类(base class)
21.zc?derived class)
22.子类(subtype)
23.如果希望防止zcȝ接访问某个成? 可以把该成员声明为private成员
24.如果信某个成员提供了派生类需要直接访问的操作或数据存? 而且通过q个成员, zcȝ实现会更有效, 则声明ؓprotected成员
25.基类的构造函数没有被zcȝ?析构函数和拷贝赋值操作符也同h有被l承)
26.多?multiple inheritance)
27.虚拟l承(virtual inheritance)
28.RTTI(q行时刻cd识别) --在程序执行过E中L一个点? 能够查询某类的引用或指针指向的实际类?br /> 29.cd/子类型承关pL映了一U?is-a(是一U?"的关p?br /> 30.泛型设计(Generic)
31.异常(exception)
32.异常处理(exception handling) --异常处理设施大大地减了E序代码的长度和复杂?br /> 33.E序调用?Program call stack)
34.名字I间namespace
35.使用带有_选择功能的using声明代替using指示W?br /> 36.vector --向量
37.头文?<vector>
38.q代器是一个支持指针类型抽象的cd?br /> 39.搜烦(search)法: find(), find_if(), search(), binary_earch(), count(), count_if()
   分类排序(sorting)与通用排序(ordering)法: sort(), partial_sort(), merge(), partition(), rotate(), reverse(), random_shuffle()
   删除(deletion)法: unique()和remove()
   术(numeric)法: accumulate(), partial_sum(), inner_product() 和adjacent_difference()
   生成(generation)和变?mutation)法: generate(), fill(), transformation(), copy(), for_each()
   关系(Relational)法: equal(), min(), max()
40.法头文?<algorithm>

jianc 2012-03-06 16:52 发表评论
]]>
C++Primer MW记2 开?/title><link>http://www.shnenglu.com/jianc/archive/2012/03/06/167237.html</link><dc:creator>jianc</dc:creator><author>jianc</author><pubDate>Tue, 06 Mar 2012 05:09:00 GMT</pubDate><guid>http://www.shnenglu.com/jianc/archive/2012/03/06/167237.html</guid><wfw:comment>http://www.shnenglu.com/jianc/comments/167237.html</wfw:comment><comments>http://www.shnenglu.com/jianc/archive/2012/03/06/167237.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/jianc/comments/commentRss/167237.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jianc/services/trackbacks/167237.html</trackback:ping><description><![CDATA[1.分而治? 逐步求精(把问题分解成许多问? 逐一解决, 然后l合在一? p决了ȝ问题)<br />2.函数原型(function prototype)<br />3.调用(invoke)<br />4.渐进式生成程序的Ҏ(先写哑函? 后面再用真正的实现来代替q些哑函?<br />5.试图一下子写出完整的功能E序, 几乎不肯?br />6.Conversioncd转换<br />7.q代(iterate), 循环(loop)<br />8.预处理指C符(preprocessor include directive)<br />9.~译c++E序, ~译器会自动预处理__cplusplus<br />10.~译cE序, ~译器自动预处理__STDC__<br />11.__STDC__和__cplusplus不会同时被定?br />12.__LINE__记录文g已经被编译的行数<br />13.__FILE__记录正在被编译的文g名字<br />14.__TIME__记录当前~译旉<br />15.__DATE__记录当前~译日期<br /><br /><br /><br /><br /><img src ="http://www.shnenglu.com/jianc/aggbug/167237.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jianc/" target="_blank">jianc</a> 2012-03-06 13:09 <a href="http://www.shnenglu.com/jianc/archive/2012/03/06/167237.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++Primer MW记1 c++概述http://www.shnenglu.com/jianc/archive/2012/03/06/167233.htmljiancjiancTue, 06 Mar 2012 03:44:00 GMThttp://www.shnenglu.com/jianc/archive/2012/03/06/167233.htmlhttp://www.shnenglu.com/jianc/comments/167233.htmlhttp://www.shnenglu.com/jianc/archive/2012/03/06/167233.html#Feedback0http://www.shnenglu.com/jianc/comments/commentRss/167233.htmlhttp://www.shnenglu.com/jianc/services/trackbacks/167233.html 2.Z对象(object based)的程序设?br /> 3.通过一l数据抽象来建立问题的模? 在c++中体Cؓc?br /> 4.与每个类相关的算法称为类的公有接?public interface)
5.面向对象的程序设计方法通过l承(inheritance)机制和动态绑?dynamic binding)机制扩展了抽象数据类?br /> 6.l承机制对现有实C码重?br /> 7.动态绑定对现有接口的重?专家:不要对实现编E? 要对接口~程)
8.c++支持多种E序设计Ҏ(~点, 使得语言q于庞大, 复杂)





jianc 2012-03-06 11:44 发表评论
]]>
þþƷĻ| þAV| þۺ77777| þҹɫtvվ| 99Ʒþ| þþƷAV뽿ɫ | 97þóƷɰ| þù¶ƷӰ| һþöAV| þĻ| þþþһ| һAvëƬþþƷ| þþþþþþŮ| Ʒ99þþþþլС˵ | 8090Ʒþһ| ˾þۺӰԺ| ɫۺϾþþþ| þþþ޾Ʒ| ھƷžžþþþƷ| 97þ㽶߿ۿ| þ93Ʒ91þۺ| ŷպþþƷ| ɫۺϾþþþþþþ| 99þó˹Ʒ| þþƷһ| þþۺϾɫۺϾ| ŷ߽˾þ| þ¾Ʒ| Ӱ7777þþƷˬ| þˬˬƬAV| þԭƷ| պһƵþ| þþƷˮavۺ | þҹɫƷվ| þwww˳ɾƷ㽶| 97Ʒ˾þþô߽97| 99þþƷձһ| þ| þۺۺϾþ97ɫ| þɧ| þþAVҰ|