??xml version="1.0" encoding="utf-8" standalone="yes"?>成人久久久观看免费毛片,亚洲精品成人网久久久久久,伊人丁香狠狠色综合久久http://www.shnenglu.com/urgentmind/category/385.html勇往直前Q专注于技?..zh-cnTue, 20 May 2008 00:20:52 GMTTue, 20 May 2008 00:20:52 GMT60[转]《C++~程规范》笔记的~程设计风格及编E步?/title><link>http://www.shnenglu.com/urgentmind/articles/7920.html</link><dc:creator>TanZek</dc:creator><author>TanZek</author><pubDate>Wed, 31 May 2006 03:27:00 GMT</pubDate><guid>http://www.shnenglu.com/urgentmind/articles/7920.html</guid><wfw:comment>http://www.shnenglu.com/urgentmind/comments/7920.html</wfw:comment><comments>http://www.shnenglu.com/urgentmind/articles/7920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/urgentmind/comments/commentRss/7920.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/urgentmind/services/trackbacks/7920.html</trackback:ping><description><![CDATA[W?条:一个实体应该只有一个紧凑的职责 <br />  单一职责原则。这个原则ƈ不那么容易执行,即是STLq样的程序库Q也一样会犯违反该原则的错误。在q里QD了两个违反这一原则的著名实玎ͼrealloc和stl 中的basic_string。不q,对于basic_stringQ我x起MFC中的CStringq是好了不少。在《Exceptional C++ style》中Q对basic_string作了剖析Qƈ且得Z个普遍的原则Q尽量将函数实现为独立的函数而不是成员函数?br />  试用一句话来说明一个模块的功能Q既不多Q也不少。如果无法用q样的一句话加以概括Q那么重新考虑规划该模块的职责。   <p class="main">W?条:正确、简单和清晰W一 <br />  单的_坚持KISS原则Q正优于速度Q简单优于复杂,清晰优于机yQ安全优于不安全?br />    E序必须为阅d的h~写Q只是顺便用于机器执?<br />    ~写E序应该以h为本Q计机W二?<br />  计算机系l中最便宜、最快速、最可靠的组仉q不存在Q简单设计的重要性怎么也不q分?br />    使一个正的E序变快Q比使一个快速的E序正确要容易的多?br />    避免使用E序设计语言的冷ȝ性,应该使用最单的有效技术?br />    不要毫无节制地重载运符。 ?<br />    不要滥用匿名变量Q合理用命名变量。?<br />    当然Q这不是说连 vector().swap(other)q样的惯用法也要排斥。 </p><p class="main">W?条:~程中应知道何时和如何考虑可׾~?<br />  从字面上来看Q这差不多等于外交辞令。答案无非是“适当的”时候“适当地”考虑可׾~性。这非常依赖于Y件工E师的经验和知识。所以,本条目也“适当地”回避了那种~Z营养的教|着重讨论算法复杂度的选择问题?<br />  基本上,U性复杂度可以作ؓ一个算法是否可选的分界炏V值得p_֊避免选择差于U性复杂度的算法,而不差于U性复杂度的算法则可以接受。所以,把性能攑֜嘴边的兄弟们注意了,你的_֊可别N了地方,高dU犹在耻I不成熟的优化是程序设计中的万恶之源。必要时Q先努力优化复杂度(选择好的法--- -法无用,去面壁!Q?<br />  Z提一句排序算法,通用排序法的复杂度最好是O(NlgN)Q但是特定领域完全可以有更好复杂度的法。   </p><p class="main">W?条:不要q行不成熟的优化 <br />  “不成熟的优化是E序设计中的万恶之源?----高dU_用的q句话这本书中出C若干ơ,高dU_他的不朽名著《计机E序设计艺术》中也一再强调了q一点,q说他以前程序中的许多错误都是关于不成熟优化的。看来,唯一在诱惑面前没有堕落的Q只有耶稣Q即使是大师也无法抗拒。既然如此,把下面的话放在电脑桌面上Q   <br />  让一个正的E序更快速,比让一个快速的E序正确Q要Ҏ的太多太多?</p><p class="main">W?条:不要q行不成熟的劣化 <br />  什么是不成熟的劣化呢?典型的有Q   <br />  在可以通过引用传递的时候,却定义了通过g递参数?<br />  在用前~++操作W很适合的场合,却用后~版本?<br />  在构造函C使用赋值操作而不是初始化列表?<br />  关于W一条有一些例外,一般而言Q不传递原生类型的引用Q讨论前提是传值的E序语义没有问题Q。关于第二条Q一些很老的C语言的书上有q后~版本可能比前~版本更快----当然Q这只可能针对原生类?-的说法,忘记它吧Q现代编译器会轻而易丄优化掉这之间的差异。而对于用户定义类型,实现后缀形式?+?-操作W都意味着效率上的损失。习惯的力量是巨大的Q养成用前~版本的习惯吧?br />  然而,要区别不成熟的优化和不成熟的劣化之间Q需要够的训练和基知识Q这些知识可以从《Effective C++?《More Effective C++》《Exceptional C++》《More Exceptional C++》中获得?/p><p class="main"><br />W?条:量减少全局和共享数?<br />  全局数据是应该努力避免的Q它D两个问题Q名字污染和q程耦合。类的公有静态变量只是解决了名字污染问题Qƈ没有解决q程数据耦合问题。同PSingleton模式也存在远E耦合问题?<br />  全局数据通常意味着׃nQ共享数据则意味着关系Q意味着复杂性。再多线E中Q对׃n数据的访问通常都需要串行化?<br />  关于变量Q一个比较深ȝ看法是:一个算法用的变量Q命名的和匿名的Q越,p好。这个变量包括局部变量。   </p><p class="main">W?条:信息隐藏 <br />  对于一个类Q决不要数据公开Q数D合的struct 例外Q,也不要返回指向内部数据成员的指针或引用供外部代码修改。通过提供抽象Q我们将获得插入不变式检查的能力。   </p><p class="main">W?条:懂得何时和如何进行ƈ发性编E?<br />  q个问题主要是考虑多线E和多进E的~程Q我期待着q行E序设计q入C++的领域。要~写正确、安全的多线E代码ƈ不简单,特别是考虑到可UL性时Q更是如此?<br />  不过Q本条目的题目太大了Q很隑֜一个条目中描述完整Q只能概q几个要点:   <br />  参考目标^台文,了解该^台的同步化原语?<br />  最好将q_原语用自p计的抽象包装h <br />  保正在使用的类型在多线E程序中使用是安全的 </p><p class="main">W?条:保资源为对象所拥有。用显式的RAII和智能指?<br />  好像是在《Imperfact C++》中说过Q仅仅因为有RAII值得使用C++。C++/CLI也强调引入确定性析构,定性析构正式RAII得以实现的基之一。通过RAII我们能够得到的远q超Z般程序员的想象,在讨论异常安全代码时Q将q一步见识RAII的威力?<br />  在实现RAIIӞ需要小心复制构造和赋|~译器的版本可能q不正确。另外,需要确保资源ؓ对象所有,不要在一行分配一个以上的资源。下面的代码是不安全的: <br />  Fun(shared_ptr(new Widget), shared_ptr(new Widget)); <br />  取而代之的正确Ҏ是: <br />  shared_ptr sp1(new Widget), sp2(new Widget); <br />   Fun(sp1, sp2);</p><p class="main"><font size="2">Trackback: <a class="" title="http://ncre.csai.cn/ncrefx/200605300909241137.htm" target="_blank">http://ncre.csai.cn/ncrefx/200605300909241137.htm</a></font><br /></p><img src ="http://www.shnenglu.com/urgentmind/aggbug/7920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/urgentmind/" target="_blank">TanZek</a> 2006-05-31 11:27 <a href="http://www.shnenglu.com/urgentmind/articles/7920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++deleteq算W的xhttp://www.shnenglu.com/urgentmind/articles/1882.htmlTanZekTanZekMon, 19 Dec 2005 07:47:00 GMThttp://www.shnenglu.com/urgentmind/articles/1882.htmlhttp://www.shnenglu.com/urgentmind/comments/1882.htmlhttp://www.shnenglu.com/urgentmind/articles/1882.html#Feedback0http://www.shnenglu.com/urgentmind/comments/commentRss/1882.htmlhttp://www.shnenglu.com/urgentmind/services/trackbacks/1882.html         针对C++的deleteq算W的用法Q运行下例程序段Q?BR>
int e=3;
int *p= new int(e);
cout
<<p<<" "<<*p<<endl;
delete p;
cout
<<p<<" "<<*p<<endl;
p
=&e;
cout
<<p<<" "<<*p<<endl;

Output:
0x4a2480 3
0x4a2480 0
0x22ff74 3

Zp在释攑֐q有其地址存在Q且其指向变为初始|
用char型变量测试,如同Q只是改成了初始?"
对于后面的p=&eQؓ何能够l运行?

对于内存变量的操作,释放内存I间的真正操作ؓ什么?

TanZek 2005-12-19 15:47 发表评论
]]>
几个C语言内定义的??http://www.shnenglu.com/urgentmind/articles/1648.htmlTanZekTanZekFri, 09 Dec 2005 10:43:00 GMThttp://www.shnenglu.com/urgentmind/articles/1648.htmlhttp://www.shnenglu.com/urgentmind/comments/1648.htmlhttp://www.shnenglu.com/urgentmind/articles/1648.html#Feedback0http://www.shnenglu.com/urgentmind/comments/commentRss/1648.htmlhttp://www.shnenglu.com/urgentmind/services/trackbacks/1648.htmlC标准中指定了一些预定义的宏
                  __DATE__
                  q行预处理的日期Q“Mmm dd yyyy”Ş式的字符串文字)

                  __FILE__
                  代表当前源代码文件名的字W串文字

                  __LINE__
                  代表当前源代码中的行L整数帔R

                  __TIME__
                  源文件编译时_格式微“hhQmmQss?BR>
                  __func__
                  当前所在函数名 


上述宏的使用:
//cpp.cpp
#include <iostream>
#include <cstdlib>

void why_me();

using namespace std;

int main(int argc, char* argv[])
{
  cout<<"The file is "<<__FILE__<<"."<<endl;
  cout<<"The date is "<<__DATE__<<"."<<endl;
  cout<<"The time is "<<__TIME__<<"."<<endl;
  cout<<"This is line "<<__LINE__<<"."<<endl;
  cout<<"This function is "<<__func__<<"."<<endl;
  why_me();
  system("PAUSE");
  return 0;
}

void why_me(void)
{
  cout<<"This function is "<<__func__<<"."<<endl;
  cout<<"The file is "<<__FILE__<<"."<<endl;
  cout<<"This is line "<<__LINE__<<"."<<endl;
}


输出l果如下:
output.bmp


Trackback:  http://www.blogcn.com/user65/yk103/index.html



TanZek 2005-12-09 18:43 发表评论
]]>
þWWW˳ɡƬ| ɫþˬˬƬAV| þþƷҹɫA| 91þþƷ91þɫ| ĻþþƷAPP | Ʒþˬۺ | þþƷaĻؿ| ޾Ʒھþ| ԭۺϾþô˵| Ʒþþþþù| Ʒݾþþþø | ޾ƷŮþ777777| þۺɫɫ| þþþAVƬ | þþù޾Ʒ| Ʒݾþþþø| þۺϾþ߾Ʒ| þˬˬƬav| þþþþ| þùƷ-Ʒ| žžþþƷ| þֻоƷ߹ۿ| re99þ6Ʒ| ݺݾþŷר| þùһ| һɫþ88ۺպƷ| ĻþþƷ1| þþƷҹһ| þþƷѿ| ¾þƵ| ƷƵþþ| ɫ͵͵88ŷƷþþ| þþþþùƷ볬| ëƬþþþþùëƬ| þþþƷ| ɫAVԾþþþþ| þ۲ӰԺѿҹɫ| avԾþþþa| ݾþþù| þþžȫ| ٸþþþþñŪ߳|