??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品女人天堂AV麻,久久久久久毛片免费播放,欧美成a人片免费看久久http://www.shnenglu.com/zerolee/category/3015.htmlx自己5q后?x)是什么样子…?/description>zh-cnMon, 19 Sep 2011 20:06:07 GMTMon, 19 Sep 2011 20:06:07 GMT60Inside The C++ Object Model 阅读W记http://www.shnenglu.com/zerolee/archive/2011/09/19/156211.htmlZero LeeZero LeeMon, 19 Sep 2011 05:18:00 GMThttp://www.shnenglu.com/zerolee/archive/2011/09/19/156211.htmlhttp://www.shnenglu.com/zerolee/comments/156211.htmlhttp://www.shnenglu.com/zerolee/archive/2011/09/19/156211.html#Feedback0http://www.shnenglu.com/zerolee/comments/commentRss/156211.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/156211.html?U情况会(x)D“~译器必Mؓ(f)未声明constructor之classes合成一个default constructor“。C++ 标准把那些合成物UCؓ(f)implicit nontrivial default constructors。被合成出来的constructor只能满~译?而非E序)的需要。它之所以能够完成Q务,是借着“调用member object ?base class 的default constructor“ 或是 ”为每一个object初始化其virtual function 机制或virtual base class机制“而完成。至于没有存在那四种情况而又没有声明Mconstructor的classesQ我们说它们拥有的是implicit trivial default constructorsQ它们实际上q不?x)被合成出来?br />在合成出来的default constructor中,只有base class subobjects 和member class objects?x)被初始化。所有其它的nonstatic data memeberQ如整数、整数指针、整数数l等{都不会(x)被初始化。这些初始化操作对程序而言或许有需要,但对~译器则q必要?br />






Zero Lee 2011-09-19 13:18 发表评论
]]>
可行的方法模仿goto功能http://www.shnenglu.com/zerolee/archive/2011/03/23/142561.htmlZero LeeZero LeeWed, 23 Mar 2011 04:27:00 GMThttp://www.shnenglu.com/zerolee/archive/2011/03/23/142561.htmlhttp://www.shnenglu.com/zerolee/comments/142561.htmlhttp://www.shnenglu.com/zerolee/archive/2011/03/23/142561.html#Feedback0http://www.shnenglu.com/zerolee/comments/commentRss/142561.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/142561.html代码片段如下:
1 do {
2    
3    if (condition1) break;
4    
5    if (condition2) break;
6    
7 while (0);




Zero Lee 2011-03-23 12:27 发表评论
]]>
(?C++中extern “C”含义深层探?/title><link>http://www.shnenglu.com/zerolee/archive/2011/03/17/142064.html</link><dc:creator>Zero Lee</dc:creator><author>Zero Lee</author><pubDate>Thu, 17 Mar 2011 09:20:00 GMT</pubDate><guid>http://www.shnenglu.com/zerolee/archive/2011/03/17/142064.html</guid><wfw:comment>http://www.shnenglu.com/zerolee/comments/142064.html</wfw:comment><comments>http://www.shnenglu.com/zerolee/archive/2011/03/17/142064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/zerolee/comments/commentRss/142064.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zerolee/services/trackbacks/142064.html</trackback:ping><description><![CDATA[<p>(?C++中extern “C”含义深层探烦<br> <br> <br>1.引言</p> <p>  C++语言的创建初h“a better C”Q但是这q不意味着C++中类似C语言的全局变量和函数所采用的编译和q接方式与C语言完全相同。作ZU欲与C兼容的语aQC++保留了一部分q程 式语a的特点(被世人称?#8220;不彻底地面向对象”Q,因而它可以定义不属于Q何类的全局变量和函数。但是,C++毕竟是一U面向对象的E序设计语言Qؓ(f)了支 持函数的重蝲QC++对全局函数的处理方式与C有明昄不同?br>  2.从标准头文g说v</p> <p>  某企业曾l给出如下的一道面试题Q?/p> <p>  面试?br>  Z么标准头文g都有cM以下的结构? </p> <p> </p> <p><br>#ifndef __INCvxWorksh<br>#define __INCvxWorksh <br>#ifdef __cplusplus<br>extern "C" {<br>#endif <br>/*...*/ <br>#ifdef __cplusplus<br>}<br>#endif <br>#endif /* __INCvxWorksh */</p> <p><br>  分析<br>  昄Q头文g中的~译?#8220;#ifndef __INCvxWorksh?define __INCvxWorksh?endif” 的作用是防止该头文g被重复引用?/p> <p>  那么</p> <p>#ifdef __cplusplus<br>extern "C" {<br>#endif <br>#ifdef __cplusplus<br>}<br>#endif </p> <p><br>  的作用又是什么呢Q我们将在下文一一道来?br> <br>  3.深层揭密extern "C"</p> <p>  extern "C" 包含双重含义Q从字面上即可得刎ͼ(x)首先Q被它修饰的目标?#8220;extern”的;其次Q被它修饰的目标?#8220;C”的。让我们来详l解读这两重含义?/p> <p>  被extern "C"限定的函数或变量是externcd的;</p> <p>  extern是C/C++语言中表明函数和全局变量作用范围Q可见性)的关键字Q该关键字告诉编译器Q其声明的函数和变量可以在本模块或其它模块中使用。记住,下列语句Q?/p> <p>  extern int a;</p> <p><br>  仅仅是一个变量的声明Q其q不是在定义变量aQƈ未ؓ(f)a分配内存I间。变量a在所有模块中作ؓ(f)一U全局变量只能被定义一ơ,否则?x)出现连接错误?/p> <p>  通常Q在模块的头文g中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块BƲ引用该模块A中定义的全局? 量和函数时只需包含模块A的头文g卛_。这P模块B中调用模块A中的函数Ӟ在编译阶D,模块B虽然找不到该函数Q但是ƈ不会(x)报错Q它?x)在q接阶段中从 模块A~译生成的目标代码中扑ֈ此函数?/p> <p>  与extern对应的关键字是staticQ被它修饰的全局变量和函数只能在本模块中使用。因此,一个函数或变量只可能被本模块用时Q其不可能被extern “C”修饰?/p> <p>  被extern "C"修饰的变量和函数是按照C语言方式~译和连接的Q?/p> <p>  未加extern “C”声明时的~译方式</p> <p>  首先看看C++中对cMC的函数是怎样~译的?/p> <p>  作ؓ(f)一U面向对象的语言QC++支持函数重蝲Q而过E式语言C则不支持。函数被C++~译后在W号库中的名字与C语言的不同。例如,假设某个函数的原型ؓ(f)Q?</p> <p>void foo( int x, int y );</p> <p><br>  该函数被C~译器编译后在符号库中的名字为_fooQ而C++~译器则?x)生像_foo_int_int之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机Ӟ生成的新名字UCؓ(f)“mangled name”Q?/p> <p>  _foo_int_intq样的名字包含了函数名、函数参数数量及(qing)cd信息QC++是靠这U机制来实现函数重蝲的。例如,在C++中,函数 void foo( int x, int y )与void foo( int x, float y )~译生成的符h不相同的Q后者ؓ(f)_foo_int_float?br>  同样圎ͼC++中的变量除支持局部变量外Q还支持cL员变量和全局变量? 用户所~写E序的类成员变量可能与全局变量同名Q我们以"."来区分。而本质上Q编译器在进行编译时Q与函数的处理相|也ؓ(f)cM的变量取了一个独一无二 的名字,q个名字与用L(fng)序中同名的全局变量名字不同?/p> <p>  未加extern "C"声明时的q接方式</p> <p>  假设在C++中,模块A的头文g如下Q?/p> <p>// 模块A头文件 moduleA.h<br>#ifndef MODULE_A_H<br>#define MODULE_A_H<br>int foo( int x, int y );<br>#endif</p> <p><br>  在模块B中引用该函数Q?/p> <p>// 模块B实现文g moduleB.cpp<br>#include "moduleA.h"<br>foo(2,3);</p> <p><br>  实际上,在连接阶D,q接器会(x)从模块A生成的目标文件moduleA.obj中寻找_foo_int_intq样的符P</p> <p>  加extern "C"声明后的~译和连接方?/p> <p>  加extern "C"声明后,模块A的头文g变ؓ(f)Q?/p> <p>// 模块A头文件 moduleA.h<br>#ifndef MODULE_A_H<br>#define MODULE_A_H<br>extern "C" int foo( int x, int y );<br>#endif</p> <p><br>  在模块B的实现文件中仍然调用foo( 2,3 )Q其l果是:(x)</p> <p>  Q?Q模块A~译生成foo的目标代码时Q没有对其名字进行特D处理,采用了C语言的方式;</p> <p>  Q?Q连接器在ؓ(f)模块B的目标代码寻找foo(2,3)调用ӞL的是未经修改的符号名_foo?/p> <p>  如果在模块A中函数声明了foo为extern "C"cdQ而模块B中包含的是extern int foo( int x, int y ) Q则模块B找不到模块A中的函数Q反之亦然?/p> <p>  所以,可以用一句话概括extern “C”q个声明的真实目的(M语言中的M语法Ҏ(gu)的诞生都不是随意而ؓ(f)的,来源于真实世界的需求驱动。我们在思考问题时Q不能只停留在这个语a是怎么 做的Q还要问一问它Z么要q么做,动机是什么,q样我们可以更深入地理解许多问题Q:(x)<br>  实现C++与C?qing)其它语a的؜合编E?br>  明白了C++中extern "C"的设立动机,我们下面来具体分析extern "C"通常的用技巧?br>  4.extern "C"的惯用法</p> <p>  Q?Q在C++中引用C语言中的函数和变量,在包含C语言头文Ӟ假设为cExample.hQ时Q需q行下列处理Q?/p> <p>extern "C"<br>{<br>#include "cExample.h"<br>}</p> <p><br>  而在C语言的头文g中,对其外部函数只能指定为externcdQC语言中不支持extern "C"声明Q在.c文g中包含了extern "C"时会(x)出现~译语法错误?/p> <p>  W者编写的C++引用C函数例子工程中包含的三个文g的源代码如下Q?/p> <p>/* c语言头文Ӟ(x)cExample.h */<br>#ifndef C_EXAMPLE_H<br>#define C_EXAMPLE_H<br>extern int add(int x,int y);   // "extern" is optional [Zero]<br>#endif<br>/* c语言实现文gQcExample.c */<br>#include "cExample.h"<br>int add( int x, int y )<br>{<br>return x + y;<br>}<br>// c++实现文gQ调用addQcppFile.cpp</p> <p>/*</p> <p>[Zero] below, can be written as <br></p> <p>extern "C" int add(int,int); <br></p> <p>#include "cExample.h"</p> <p>*/</p> <p>extern "C"  <br>{<br>#include "cExample.h"<br>}<br>int main(int argc, char* argv[])<br>{<br>add(2,3); <br>return 0;<br>}</p> <p><br>  如果C++调用一个C语言~写?DLLӞ当包?DLL的头文g或声明接口函数时Q应加extern "C" { }?/p> <p>  Q?Q在C中引用C++语言中的函数和变量时QC++的头文g需dextern "C"Q但是在C语言中不能直接引用声明了extern "C"的该头文Ӟ应该仅将C文g中将C++中定义的extern "C"函数声明为externcd?br>  W者编写的C引用C++函数例子工程中包含的三个文g的源代码如下Q?/p> <p>//C++头文?cppExample.h<br>#ifndef CPP_EXAMPLE_H<br>#define CPP_EXAMPLE_H<br>extern "C" int add( int x, int y );<br>#endif<br>//C++实现文g cppExample.cpp<br>#include "cppExample.h"<br>int add( int x, int y )<br>{<br>return x + y;<br>}<br>/* C实现文g cFile.c<br>/* q样?x)编译出错?x)#include "cExample.h" */<br>extern int add( int x, int y );<br>int main( int argc, char* argv[] )<br>{<br>add( 2, 3 ); <br>return 0;<br>}</p> <br>  如果深入理解了第3节中所阐述的extern "C"在编译和q接阶段发挥的作用,p真正理解本节所阐述的从C++引用C函数和C引用C++函数的惯用法。对W?节给出的CZ代码Q需要特别留意各个细节?<img src ="http://www.shnenglu.com/zerolee/aggbug/142064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zerolee/" target="_blank">Zero Lee</a> 2011-03-17 17:20 <a href="http://www.shnenglu.com/zerolee/archive/2011/03/17/142064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>构造函敎ͼ拯构造,拯赋?/title><link>http://www.shnenglu.com/zerolee/archive/2010/12/03/135351.html</link><dc:creator>Zero Lee</dc:creator><author>Zero Lee</author><pubDate>Fri, 03 Dec 2010 07:21:00 GMT</pubDate><guid>http://www.shnenglu.com/zerolee/archive/2010/12/03/135351.html</guid><description><![CDATA[Example1Q?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: #008080;"> 1</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> A {<br></span><span style="color: #008080;"> 2</span> <span style="color: #000000;"></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br></span><span style="color: #008080;"> 3</span> <span style="color: #000000;">    A() {<br></span><span style="color: #008080;"> 4</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">A.ctor()</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;"> 5</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;"> 6</span> <span style="color: #000000;">    A(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> A</span><span style="color: #000000;">&</span><span style="color: #000000;"> other) {<br></span><span style="color: #008080;"> 7</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">A.copyctor()</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;"> 8</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;"> 9</span> <span style="color: #000000;">    A</span><span style="color: #000000;">&</span><span style="color: #000000;"> </span><span style="color: #0000ff;">operator</span><span style="color: #000000;"> </span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> A</span><span style="color: #000000;">&</span><span style="color: #000000;"> other) {<br></span><span style="color: #008080;">10</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">A.op =() </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">11</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">12</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">13</span> <span style="color: #000000;"><br></span><span style="color: #008080;">14</span> <span style="color: #000000;"></span><span style="color: #0000ff;">class</span><span style="color: #000000;"> AA : </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> A<br></span><span style="color: #008080;">15</span> <span style="color: #000000;">{<br></span><span style="color: #008080;">16</span> <span style="color: #000000;"></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br></span><span style="color: #008080;">17</span> <span style="color: #000000;">    AA() {<br></span><span style="color: #008080;">18</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">AA.ctor()</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">19</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">20</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">21</span> <span style="color: #000000;"><br></span><span style="color: #008080;">22</span> <span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main()<br></span><span style="color: #008080;">23</span> <span style="color: #000000;">{<br></span><span style="color: #008080;">24</span> <span style="color: #000000;">    AA aa;  </span><span style="color: #008000;">//</span><span style="color: #008000;"> A.ctor => AA.ctor</span><span style="color: #008000;"><br></span><span style="color: #008080;">25</span> <span style="color: #008000;"></span><span style="color: #000000;">    AA bb(aa);  </span><span style="color: #008000;">//</span><span style="color: #008000;"> A.copyctor</span><span style="color: #008000;"><br></span><span style="color: #008080;">26</span> <span style="color: #008000;"></span><span style="color: #000000;">    aa </span><span style="color: #000000;">=</span><span style="color: #000000;"> bb;    </span><span style="color: #008000;">//</span><span style="color: #008000;"> A.op =</span><span style="color: #008000;"><br></span><span style="color: #008080;">27</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">28</span> <span style="color: #000000;">}<br></span><span style="color: #008080;">29</span> <span style="color: #000000;"></span></div> 1. ~译器会(x)默认调用基类的构造函数?br>2. l承cȝ拯构造函?拯赋D符函数没有定义Q编译器?x)默认调用基cȝ应的函数?br><br>Example2:<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: #008080;"> 1</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> A {<br></span><span style="color: #008080;"> 2</span> <span style="color: #000000;"></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br></span><span style="color: #008080;"> 3</span> <span style="color: #000000;">    A() {<br></span><span style="color: #008080;"> 4</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">A.ctor()</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;"> 5</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;"> 6</span> <span style="color: #000000;">    A(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> A</span><span style="color: #000000;">&</span><span style="color: #000000;"> other) {<br></span><span style="color: #008080;"> 7</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">A.copyctor()</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;"> 8</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;"> 9</span> <span style="color: #000000;">    A</span><span style="color: #000000;">&</span><span style="color: #000000;"> </span><span style="color: #0000ff;">operator</span><span style="color: #000000;"> </span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> A</span><span style="color: #000000;">&</span><span style="color: #000000;"> other) {<br></span><span style="color: #008080;">10</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">A.op =() </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">11</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">12</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">13</span> <span style="color: #000000;"><br></span><span style="color: #008080;">14</span> <span style="color: #000000;"></span><span style="color: #0000ff;">class</span><span style="color: #000000;"> AA : </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> A<br></span><span style="color: #008080;">15</span> <span style="color: #000000;">{<br></span><span style="color: #008080;">16</span> <span style="color: #000000;"></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br></span><span style="color: #008080;">17</span> <span style="color: #000000;">    AA() {<br></span><span style="color: #008080;">18</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">AA.ctor()</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">19</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">20</span> <span style="color: #000000;">    AA(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> AA</span><span style="color: #000000;">&</span><span style="color: #000000;"> other)<br></span><span style="color: #008080;">21</span> <span style="color: #000000;">    : A(other) {<br></span><span style="color: #008080;">22</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">AA.copyctor() </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">23</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">24</span> <span style="color: #000000;">    AA</span><span style="color: #000000;">&</span><span style="color: #000000;"> </span><span style="color: #0000ff;">operator</span><span style="color: #000000;"> </span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> AA</span><span style="color: #000000;">&</span><span style="color: #000000;"> other) {<br></span><span style="color: #008080;">25</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">AA.op =()</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">26</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">27</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">28</span> <span style="color: #000000;"><br></span><span style="color: #008080;">29</span> <span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main()<br></span><span style="color: #008080;">30</span> <span style="color: #000000;">{<br></span><span style="color: #008080;">31</span> <span style="color: #000000;">    AA aa;  </span><span style="color: #008000;">//</span><span style="color: #008000;"> A.ctor => AA.ctor</span><span style="color: #008000;"><br></span><span style="color: #008080;">32</span> <span style="color: #008000;"></span><span style="color: #000000;">    AA bb(aa);  </span><span style="color: #008000;">//</span><span style="color: #008000;"> A.copyctor => AA.copyctor</span><span style="color: #008000;"><br></span><span style="color: #008080;">33</span> <span style="color: #008000;"></span><span style="color: #000000;">    aa </span><span style="color: #000000;">=</span><span style="color: #000000;"> bb;    </span><span style="color: #008000;">//</span><span style="color: #008000;"> AA.op =</span><span style="color: #008000;"><br></span><span style="color: #008080;">34</span> <span style="color: #008000;"></span><span style="color: #000000;">                                <br></span><span style="color: #008080;">35</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">36</span> <span style="color: #000000;">}</span></div> 1. 拯构造函C(x)默认调用基类的构造函敎ͼ而不是对应的拯构造函敎ͼ除非在自己手动调用?br>2. 自定义的拯赋D符函数Q也不会(x)调用基类的相应函数?br><br><br><img src ="http://www.shnenglu.com/zerolee/aggbug/135351.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zerolee/" target="_blank">Zero Lee</a> 2010-12-03 15:21 <a href="http://www.shnenglu.com/zerolee/archive/2010/12/03/135351.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Life scope of one object examplehttp://www.shnenglu.com/zerolee/archive/2010/12/03/135349.htmlZero LeeZero LeeFri, 03 Dec 2010 06:48:00 GMThttp://www.shnenglu.com/zerolee/archive/2010/12/03/135349.htmlhttp://www.shnenglu.com/zerolee/comments/135349.htmlhttp://www.shnenglu.com/zerolee/archive/2010/12/03/135349.html#Feedback0http://www.shnenglu.com/zerolee/comments/commentRss/135349.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/135349.html
 1 class A {
 2 public:
 3     A(int i) {
 4         if (i!=1) {
 5             std::vector<int> a;
 6             a.at(0= 1;
 7         } else
 8             std::cout << "ctor ok." << std::endl;
 9     }
10     ~A() {
11         std::cout << "A:dtor." << std::endl;
12     }
13 };
14 
15 void f()
16 {
17     try {
18         A a(1);
19         a.~A();
20         new (&a) A(2);  /* here, throw one exception, but still destroy a again  */
21     } catch() {
22         std::cout << "catch exception." << std::endl;
23     }
24 }
25 

Above code snippet, if in placement new call, constructor of one class throws one exception, that a will still be destroyed again, since a is one automatic object, according to Cpp standard. In this case, one object constructed once, but destroyed twice, undefined/unpredicated behavior may happen.




Zero Lee 2010-12-03 14:48 发表评论
]]>
One new template implementation of single linked listhttp://www.shnenglu.com/zerolee/archive/2010/10/17/130198.htmlZero LeeZero LeeSun, 17 Oct 2010 06:26:00 GMThttp://www.shnenglu.com/zerolee/archive/2010/10/17/130198.htmlhttp://www.shnenglu.com/zerolee/comments/130198.htmlhttp://www.shnenglu.com/zerolee/archive/2010/10/17/130198.html#Feedback0http://www.shnenglu.com/zerolee/comments/commentRss/130198.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/130198.html
/**
  * Used to create and manage a single linked list of objects of a common
  * type.  The list of created objects can be examined to find a key by
  * an identifier.
  */
 1
 template <class T, typename K>
 2 class objList {
 3 protected:
 4     static T* objFirst;
 5     T* objNext;
 6     const K objKey;
 7     
 8     objList(const K key) {
 9         objKey = key;
10         objNext = objFirst;
11         objFirst = (T*)this;
12     }
13 public:
14     static T* getObject(const K& key);
15 }; 
16 template <class T, typename K>
17 T* objList<T, K>::objFirst = NULL;
18 
19 template <class T, typename K>
20 objList<T, K>::getObject(const K& key)
21 {
22     T* obj = objList<T, K>::objFirst;
23     while (obj) {
24         if (key==obj->objKey)
25             break;
26         obj = obj->objNext;
27     }
28     return obj;
29 }




Zero Lee 2010-10-17 14:26 发表评论
]]>
Qt GUI Programming Basichttp://www.shnenglu.com/zerolee/archive/2007/05/21/24538.htmlZero LeeZero LeeMon, 21 May 2007 08:14:00 GMThttp://www.shnenglu.com/zerolee/archive/2007/05/21/24538.htmlhttp://www.shnenglu.com/zerolee/comments/24538.htmlhttp://www.shnenglu.com/zerolee/archive/2007/05/21/24538.html#Feedback0http://www.shnenglu.com/zerolee/comments/commentRss/24538.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/24538.html阅读全文

Zero Lee 2007-05-21 16:14 发表评论
]]>
DLL~程专题http://www.shnenglu.com/zerolee/archive/2007/05/20/24430.htmlZero LeeZero LeeSun, 20 May 2007 03:32:00 GMThttp://www.shnenglu.com/zerolee/archive/2007/05/20/24430.htmlhttp://www.shnenglu.com/zerolee/comments/24430.htmlhttp://www.shnenglu.com/zerolee/archive/2007/05/20/24430.html#Feedback7http://www.shnenglu.com/zerolee/comments/commentRss/24430.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/24430.html阅读全文

Zero Lee 2007-05-20 11:32 发表评论
]]>
sizeof操作W用注?/title><link>http://www.shnenglu.com/zerolee/archive/2007/05/19/24393.html</link><dc:creator>Zero Lee</dc:creator><author>Zero Lee</author><pubDate>Sat, 19 May 2007 08:14:00 GMT</pubDate><guid>http://www.shnenglu.com/zerolee/archive/2007/05/19/24393.html</guid><wfw:comment>http://www.shnenglu.com/zerolee/comments/24393.html</wfw:comment><comments>http://www.shnenglu.com/zerolee/archive/2007/05/19/24393.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/zerolee/comments/commentRss/24393.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zerolee/services/trackbacks/24393.html</trackback:ping><description><![CDATA[ sizeof操作W用注意:(x)<br> <p><br> 先看下面的测试代?1)?2)Q?br> =====================================================================</p> <span> <p>试代码(1) :  <span><br>const char* a[] = { "a", "bcedf" };</span></p> <p align=left><span>// </span><span>试下面?/span><span>sizeof(a)</span><span>Q它的结果是</span><span>’8’, </span><span>原因在于</span><span>a</span><span>是指针数l,里面存储的是指针元素?/span></p> <p align=left><span><span>    </span>// </span><span>在这里是两个指针元素的数l。故?/span><span>4*2=8.</span></p> <p align=left><span><span>    </span>cout << sizeof(a) << endl; // print '8'</span></p> <p align=left><span><span>    </span>// test sizeof(*a), sizeof(a[0]), sizeof(a[0][0])</span></p> <p align=left><span><span>    </span>cout << sizeof(*a) << endl; // print '4' </span><span>q里</span><span>*a</span><span>是求出第一个字W串的地址</span><span>,</span><span>注意</span><span>a</span><span>是指针的指针?/span></p> <p align=left><span><span>    </span>cout << sizeof(a[0]) << endl;// print '4' </span><span>q里?/span><span>a[0] = *a,</span><span>跟上面的一栗?/span></p> <p>    cout << sizeof(a[0][0]) << endl; // print '1' <span style="COLOR: red">q里是第一个字W串的第一个字WaQ一个字节?br></span><br>试代码(2) :<br>struct TestStruct {<br>   char c_elem; // 1 bytes<br>   int int_elem; // 4 bytes<br> };</p> <p><span> cout << sizeof(TestStruct) << endl;     // it prints '8' .<br> <br>struct TestStruct1 {<br>    char c_elem1;<br>    char c_elem2:<br>    char c_elem3;<br>    ...                     // num 个charcd数据成员<br>};<br>   cout << sizeof(TestStruct1) <<endl;  // it prints num.<br> <br> // 输出的结果与具体的系l结构有养I此处?2位机Q故Zd的快捷和方便Q系l会(x)自动的填?padding).<br> // intcd?个字节,charcd?个字节,但是此处?x)自动填?个字节到structl构中其成?个字节?br> // 但是如果struct中只有一U类型,譬如char或intcdӞ不会(x)产生此种填补的情c但是如果不是,它会(x)输出<br> // 4的倍数个字节?br>======================================================================<br></p> </span></span> <p><span></span> </p> <img src ="http://www.shnenglu.com/zerolee/aggbug/24393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zerolee/" target="_blank">Zero Lee</a> 2007-05-19 16:14 <a href="http://www.shnenglu.com/zerolee/archive/2007/05/19/24393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>d盘文g专题--采用C/C++/MFC/WIN32(API)方式http://www.shnenglu.com/zerolee/archive/2007/05/19/24389.htmlZero LeeZero LeeSat, 19 May 2007 07:54:00 GMThttp://www.shnenglu.com/zerolee/archive/2007/05/19/24389.htmlhttp://www.shnenglu.com/zerolee/comments/24389.htmlhttp://www.shnenglu.com/zerolee/archive/2007/05/19/24389.html#Feedback1http://www.shnenglu.com/zerolee/comments/commentRss/24389.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/24389.html阅读全文

Zero Lee 2007-05-19 15:54 发表评论
]]>
N个点l成的三角Ş的最大和最内切圆E序http://www.shnenglu.com/zerolee/archive/2007/05/09/23684.htmlZero LeeZero LeeWed, 09 May 2007 02:25:00 GMThttp://www.shnenglu.com/zerolee/archive/2007/05/09/23684.htmlhttp://www.shnenglu.com/zerolee/comments/23684.htmlhttp://www.shnenglu.com/zerolee/archive/2007/05/09/23684.html#Feedback4http://www.shnenglu.com/zerolee/comments/commentRss/23684.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/23684.html阅读全文

Zero Lee 2007-05-09 10:25 发表评论
]]>
lg间的物理关系http://www.shnenglu.com/zerolee/archive/2007/03/20/20243.htmlZero LeeZero LeeTue, 20 Mar 2007 12:56:00 GMThttp://www.shnenglu.com/zerolee/archive/2007/03/20/20243.htmlhttp://www.shnenglu.com/zerolee/comments/20243.htmlhttp://www.shnenglu.com/zerolee/archive/2007/03/20/20243.html#Feedback2http://www.shnenglu.com/zerolee/comments/commentRss/20243.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/20243.html    开发可l护、易试和可重用的Y仉要全面的物理设计和逻辑设计的知识。物理设计研I组l的问题Q超Z逻辑领域的范_(d)物理设计很容易媄响可量的特性,例如q行旉、编译时间、连接时间以?qing)可执行文g大小?br />
   一个组件是׃?c文g?h文gl成的物理实体,它具体表达了一个逻辑抽象的具体实现。一个组件一般包含一个、两个甚臛_个类Q已l需要用来支持全部抽象的适当的自p符。一个组Ӟ而不是一个类Q是逻辑设计和物理设计的适当单位Q因为它能够Q?br />   1)让若q逻辑实体把一个单一的抽象表Cؓ(f)一个内聚单位;
   2)考虑到物理问题和l织问题Q?br />   3)在其他程序中选择性地重用~译单元?br />
   一个组件的逻辑接口仅限于指能够被客L(fng)序通过~译讉K的部分,而物理接口则包括它的整个头文件。如果在一个组件的物理接口中用了一个用戯定义cdTQ即使T是一个封装的逻辑l节Q也可能q那个lg的客L(fng)序在~译时依赖T的定义?br />   lg是自我包含的、内聚的和潜在的可重用的设计单位。在一个组件内部声明的逻辑l构不应该定义在那个lg之外。一个组件的.c文g应该直接包含它的.h文gQ以保.h文g可基于它自己q行语法分析。对于每一个需要的cd定义Q都始终包含其头文gQ而不是依赖一个头文gd含另一个,q样Q当一个组件允怸?include 指o(h)从其头文件中被删除时不会(x)出现问题。想要改q可用性、可重用性和可维护性,如果某个带有外部q接的结构没有在一个组件的.h文g声明Q那么我们应该避免把该结构放在这个组件的.c文g中。同L(fng)原因Q我们应该避免用局部声明去讉K有外部连接的定义?br />   
   最后友元关p虽然表面上是一个逻辑关系Q但?x)媄响到物理设计。在一个组件内部,Q局部的Q友元关pL那个lg的一个封装的实现l节。ؓ(f)了改q可用性和用户可扩展性,一个容器类常常?x)把同一个组件内的P代器视作友元Q不?x)破坏封装。友元关pd?x)直接媄响访问权限但不?x)隐含依赖?/font>



Zero Lee 2007-03-20 20:56 发表评论
]]>
关于C++中一些基本设计规则和指导斚whttp://www.shnenglu.com/zerolee/archive/2007/01/14/17615.htmlZero LeeZero LeeSun, 14 Jan 2007 07:45:00 GMThttp://www.shnenglu.com/zerolee/archive/2007/01/14/17615.htmlhttp://www.shnenglu.com/zerolee/comments/17615.htmlhttp://www.shnenglu.com/zerolee/archive/2007/01/14/17615.html#Feedback0http://www.shnenglu.com/zerolee/comments/commentRss/17615.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/17615.html   C++是一U大型语aQؓ(f)更大的设计空间开辟了道\。这里提供一些基本设计规则和指导斚wQ它们被证明是非常有用的?br />   主要设计规则被认为是l对不能q反的。甚臛_?dng)的q反也可能危?qing)大型系l的完整性?br />   ơ要设计规则也被认ؓ(f)是遵守的Q但也许不必严格地遵守。在一个隔ȝ实例中违反一个次要规则不大可能生严重的全局性媄响?br />   指导斚w是作为经验法则提出来的,因此必须遵守Q除非有强制性的工程斚w的原因要求遵守别的原则?br />
   把一个类的数据成员暴露给其客L(fng)序违反了装原则。提供对数据成员的非U有讉K意味着表示上的局部改变可能迫使客户重新编写代码。此外,׃允许Ҏ(gu)据成员进行可写访问,无法L偶尔误用D数据处在不一致的状态。保护的成员数据像公共成员数据一P无法限制 因数据改变而可能媄响到的客L(fng)数量?br />
   全局变量?x)污染全局名称I间Q而且?x)歪曲设计的物理l构Q得实际上不可能进行独立的试和有选择的重用。在新的C++目中没有必要用全局变量。我们可以通过变量放|在一个类的作用域中作为私有静态成员、ƈ提供公共静态成员函数访问它们的Ҏ(gu)来系l消除全部变量。但是,对这U模块的q度依赖是一U不良设计的症状?br />
   自由函数Q特别是那些不在M用户自定义类型上操作的函敎ͼ在系l集成时很可能与别的函数冲突。将q样的函数嵌套在cM用域中作为静态成员基本上可以消除冲突的危险?br />
   枚Dcd、typedef以及(qing)帔R数据也可能威胁全局名称I间。通过枚丄型嵌套在cM用域中,M二义性都可以通过作用域解析来消除。一个在文g作用域中的typedef看v来有点像c,但是在大型项目中急难发现。通过typedef嵌套在类作用域中Q他们就变的相对Ҏ(gu)q踪。一个在头文件中定义的整数常量,其最好的表达方式通常是通过在类作用域中的一个枚丑ր来表达。其它常量类型可以通过使它们成为某个类的静态常量成员来限定其范围?br />
   预处理宏对于人和机器来说都难以理解。由于宏不是C++的一部分Q所以宏不遵守作用域U束Qƈ且,如果宏攄在一个头文g中,宏可能与pȝ中的M文g的Q何标识符冲突。因此,宏不应该出现在头文g中,除非是作为包含卫哨?br />
   ȝ看来Q我们应该避免在一个头文g的文件作用域中引入除了类、结构、联合和自由q算W之外的M东西。当Ӟ我们允许在头文g中定义内联成员函数?br />
   一个定义被包含两次?x)引L(fng)译时错误。因为大多数C++头文件包含定义,我们有必要防止再收敛包含囄可能性。在一个头文g中,用内部包含卫哨围l定义可以确保每个头文g的内容在M一个编译单元中最多被加入一ơ?br />
   冗余Q外部)包含卫哨虽然不是一定必需的,但是它可以确保我们避免编译时的二义包含行为。通过用冗余卫哨围l头文g的包含指令,我们可以保每个~译单元最多两ơ打开一个头文g?br />
   良好的文档是软g开发必不可的一部分。缺文档将降低可用性。文档的一个重要部分是声明什么是没有定义的。否则,客户可能?x)依赖y合的行ؓ(f)Q这U行为只能来自特定的实现选择?br />   


Zero Lee 2007-01-14 15:45 发表评论
]]>
Problems about two functions of CImage in ATLhttp://www.shnenglu.com/zerolee/archive/2006/12/01/15861.htmlZero LeeZero LeeFri, 01 Dec 2006 12:36:00 GMThttp://www.shnenglu.com/zerolee/archive/2006/12/01/15861.htmlhttp://www.shnenglu.com/zerolee/comments/15861.htmlhttp://www.shnenglu.com/zerolee/archive/2006/12/01/15861.html#Feedback1http://www.shnenglu.com/zerolee/comments/commentRss/15861.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/15861.htmlAuthor: Zero Lee (from Zero Studio)
Abstract: This text is going to discuss functions of Class CImage in ATL.

   关于GetBits()函数的?对于一qDIB囑փ来说Q图像的左下角ؓ(f)像素数据的v炏V通常我们?x)认为GetBits()函数q回的是囑փ左下角的数据指针Q但是CImage实现却不是这栗?font color="#ff0000">GetBits()q回的是囑փ左上角的像素数据指针。从q个角度上来Ԍ它的功能{效于函数GetPixelAddress(0,0)调用。而且CImage的成员函C坐标是以左上角ؓ(f)坐标原点来表C的?br />
   关于SetPixelIndexed()函数的? 从函数名我们可以得知Q该函数应该应用于非真彩色图像,特别?位的囑փ?font color="#ff0000">在测试该函数Ӟ发现应用?位BMP囑փӞ不管讄什么烦引|操作后的l果昄索引值变成了0。这个现象确实让人匪h思。不知道是不是CImagecȝ该函数设计有问题。当Ӟ如果它不合理地应用于真彩色囑փQ操作的l果q是黑色?br />
   另外QCImagecMq有一些函?譬如SetPixel()和SetPixelRGB()函数Q理Z应该它们应用于真彩色图像,但是如果强硬的将它们应用于非真彩色图?试中将它们应用?位BMP囑փ)Q操作结果显C|的值都?x)被“合理”的变成灰阶数据Q比如说Q如果我们设|RGBgؓ(f)(180,0,0),操作l果色板里的数据变ؓ(f)RGB(60,60,60).

Zero Lee 2006-12-01 20:36 发表评论
]]>
如何做一名好的开发h?/title><link>http://www.shnenglu.com/zerolee/archive/2006/10/15/13705.html</link><dc:creator>Zero Lee</dc:creator><author>Zero Lee</author><pubDate>Sun, 15 Oct 2006 04:38:00 GMT</pubDate><guid>http://www.shnenglu.com/zerolee/archive/2006/10/15/13705.html</guid><wfw:comment>http://www.shnenglu.com/zerolee/comments/13705.html</wfw:comment><comments>http://www.shnenglu.com/zerolee/archive/2006/10/15/13705.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/zerolee/comments/commentRss/13705.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zerolee/services/trackbacks/13705.html</trackback:ping><description><![CDATA[ <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">我这里想说的是一些我认ؓ(f)开发h员需要具备的一些素质,当然q些只是我自q看法Q希望大家能够补充。希望大家加入在U论坛谈谈自q看法和感受:(x)</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">比较宽的知识面,q且能够时时补充自己的知识和完善自己的知识结?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">耐心好,特别是在调试和学?fn)阶D,世界上没有聪明的人只有刻苦的人。做开发其实就两g事情学习(fn)和改错,在这两g事情中间的开发过E其实是比较单的</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">永远CQ代码是lh看的而不是给机器q行的,计算机在执行E序时是不怕篏的,而h在看代码时是非常累的</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">良好的编码习(fn)惯,臛_保证自己能够随时看懂几个月前自己所写的代码</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">量让你的代码能够很Ҏ(gu)的被别h理解Q写代码时想想你?x)不会(x)在两个月后被别人?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">不要容忍自己犯重复的错误和写重复的代?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">知道如何做比得到代码更重?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">量不要做已l有很多人已l做q的事情</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">学会(x)重别h的开发成果,除非不得已不要下军_全面替换以前的系l?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">珍惜自己的时间与工作成果Q尽量让别h分n自己的开发成?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">避免假设Q多思考极端情况与引v错误的可能性,努力减少低错误</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">不要怿臛_是不要轻信自׃ؓ(f)自己所做的试l果</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">懂得坚持自己的开发思\Qƈ懂得理解与吸收别人的思想</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">学会(x)与其他h保持一_(d)但不能放弃自q开发特?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">懂得向你周围的h学习(fn)Q不论是开发能力上的还是开发经验上?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">懂得软gl构的的重要性,分析代码前先分析代码的结?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">学会(x)ȝQ定期ȝ自己所学会(x)的知识,看看自己前段旉因ؓ(f)各种原因所费的时?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">学会(x)计划Q尽量不要认为通过廉自己的工作时间来完成d</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">学会(x)正确估计自己的能力和工作旉</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <br /> <br /> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">下面q些是我认ؓ(f)一些比较适合我自q斚wQ不一定对每个人都合适:(x)</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">多看些杂志,没事情的时候可以看看以前看q的参考书Q书中很可能有你以前没有注意到的一些细?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">不要太早d一些与开发无关的事情Q因为学?fn)的黄金时期是很短暂?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">学会(x)分析别h的系l,多看看别人所开发的pȝ的先q的一面。这里包括别人的开发思\Q实现时所采用的结?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">时常感到自己被淘汰Q经常埋怨自q不努?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">知道自己~少什?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">自己做一些自׃喜欢做的事情Q比如说写文?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">能够有勇气重写自己所开发的pȝQ但当你重做时你应该采取和前一ơ不同的工作方式和方法,否则重做没有必?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">问题简单化而不是复杂化</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">维护时?x)生的一部分问题转移到开发时或是设计时来解决</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">有时候也不妨问问自己Q我不做开发时d什?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">坚持己做每周的开发计划,在事情没有做完以前不要轻易{U自q注意?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">可能多的将你所做的教给别hQ因Z有一天可能不再负责这个系l?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">做事一定要有始有终Q除非是有不得已的理由否则不要在工作完成前提前离开</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">不要你为公司做的东西带赎ͼ你因该带走的是开发经验和对开发的认识而不是代码和产品</span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </font> </p> <p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt"> <font size="2"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">* </span> <span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">感到累时׃息一下,l自己放个假也无妨,毕竟Z是机?/span> </font> </p> <img src ="http://www.shnenglu.com/zerolee/aggbug/13705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zerolee/" target="_blank">Zero Lee</a> 2006-10-15 12:38 <a href="http://www.shnenglu.com/zerolee/archive/2006/10/15/13705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最好的开发h员是培养出来Q而非买来?转蝲)http://www.shnenglu.com/zerolee/archive/2006/10/15/13696.htmlZero LeeZero LeeSun, 15 Oct 2006 04:18:00 GMThttp://www.shnenglu.com/zerolee/archive/2006/10/15/13696.htmlhttp://www.shnenglu.com/zerolee/comments/13696.htmlhttp://www.shnenglu.com/zerolee/archive/2006/10/15/13696.html#Feedback0http://www.shnenglu.com/zerolee/comments/commentRss/13696.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/13696.html来自Qzdnet.com.cn
Zero Lee 2006-10-15 12:18 发表评论
]]>
从非MFC扩展DLL中导入一个自定义的类http://www.shnenglu.com/zerolee/archive/2006/09/24/12879.htmlZero LeeZero LeeSun, 24 Sep 2006 07:55:00 GMThttp://www.shnenglu.com/zerolee/archive/2006/09/24/12879.htmlhttp://www.shnenglu.com/zerolee/comments/12879.htmlhttp://www.shnenglu.com/zerolee/archive/2006/09/24/12879.html#Feedback1http://www.shnenglu.com/zerolee/comments/commentRss/12879.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/12879.html /////////////////////////////////////////////////////////////////////////
该解x案旨在提供一U能够从非MFC扩展DLL中导入一个自定义的类的方案?/font>

自定义的cM某种意义上来Ԍ也是一U用戯定义的数据,形如struct?br />Z此考虑Q完全可以从非MFC扩展DLL中导入非MFC的用戯定义的类?/font>

Ҏ(gu)如下Q?br />1) 首先建立一个DLL( WIN32 DLL)工程Q创建头文g*.dllQ自定义一个类Q?br />在类的前面添?__declspec(dllexport)"关键字,表示该工E到处这个类?br />例如: class __declspec(dllexport) myClass ...

2) 在其实现文g中,d头文?#include "*.h""Qƈ实现相应的类实现部分?/font>

3) ~译执行生成*.dll文gQ将其COPY到应用测试工E的执行目录?debug/release)
下,COPY DLL工程的头文g*.h到应用测试工E的目录下,dq项目中Qƈ其中的
"__declspec(dllexport)"修改?__declspec(dllimport)"?/font>

4) 在其实现文g中添加头文g"#include "*.h""Q然后对其导入的c进行相应的操作?/font>

5) ~译q行试E序Q便可以实现cȝ关的操作?/font>

NOTE: 对于静?动态链接到MFC的规则DLL也可以达到同L(fng)效果Q导入自定义的类?/font>



Zero Lee 2006-09-24 15:55 发表评论
]]>
如何做出cMvc的workshophttp://www.shnenglu.com/zerolee/archive/2006/09/12/12332.htmlZero LeeZero LeeTue, 12 Sep 2006 04:21:00 GMThttp://www.shnenglu.com/zerolee/archive/2006/09/12/12332.htmlhttp://www.shnenglu.com/zerolee/comments/12332.htmlhttp://www.shnenglu.com/zerolee/archive/2006/09/12/12332.html#Feedback0http://www.shnenglu.com/zerolee/comments/commentRss/12332.htmlhttp://www.shnenglu.com/zerolee/services/trackbacks/12332.html Ҏ(gu)如下Q?/font>

1Q?span style="FONT: 7pt 'Times New Roman'">  ?/span> scbarg.h Q?/span> scbarg.cpp Q?/span> sizecbar.h Q?/span> sizecbar.cpp Q?/span> mybar.h Q?/span> mybar.cpp 文g copy C的工E目录下Q打开 vc Q将q几个文件添加进工程?/span>

2Q?span style="FONT: 7pt 'Times New Roman'">  打开 stdafx.h 文gQ在其中加入Q?/span> #include "sizecbar.h" Q?/span> #include "scbarg.h" ?/span>

3Q?span style="FONT: 7pt 'Times New Roman'">  ?/span> CmainFrame cL加成员变量:(x) CMyBar        m_wndMyBar ?/span>

4Q?span style="FONT: 7pt 'Times New Roman'">  重蝲 CMainFrame::DestroyWindow() Q在其中加入

       CString sProfile(_T("BarState"));

       m_wndMyBar.SaveState(sProfile);

SaveBarState(sProfile);

5Q?span style="FONT: 7pt 'Times New Roman'">  修改 CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 如下Q?/span>

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

       if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

              return -1;

      

       if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

              | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

              !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

       {

              TRACE0("Failed to create toolbar\n");

              return -1;      // fail to create

       }

 

       if (!m_wndStatusBar.Create(this) ||

              !m_wndStatusBar.SetIndicators(indicators,

                sizeof(indicators)/sizeof(UINT)))

       {

              TRACE0("Failed to create status bar\n");

              return -1;      // fail to create

       }

       if (!m_wndMyBar.Create(_T("My Bar"), this, 123))

       {

           TRACE0("Failed to create mybar\n");

           return -1;      // fail to create

       }

       // TODO: Delete these three lines if you don't want the toolbar to

       //  be dockable

       m_wndMyBar.SetBarStyle(m_wndMyBar.GetBarStyle() |

       CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

       m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

       m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY);

       EnableDocking(CBRS_ALIGN_ANY);

       DockControlBar(&m_wndToolBar);

       DockControlBar(&m_wndMyBar, AFX_IDW_DOCKBAR_LEFT);

       CString sProfile(_T("BarState"));

       if (VerifyBarState(sProfile))

       {

           m_wndMyBar.LoadState(sProfile);

           LoadBarState(sProfile);

       }

       return 0;

}

注:(x)U色字体部分为所加内宏V?/font>

6Q?span style="FONT: 7pt 'Times New Roman'">  在“查看”菜单下d菜单?/span> mybar Q设?/span> id 为:(x) ID_VIEW_MYBAR.

7Q?span style="FONT: 7pt 'Times New Roman'">  为其d CMainFrame::OnViewMybar() Q?/span> CMainFrame::OnUpdateViewMybar(CCmdUI* pCmdUI) 函数Q内容ؓ(f)Q?/span>

void CMainFrame::OnViewMybar()

{

       // TODO: Add your command handler code here

       BOOL bShow = m_wndMyBar.IsVisible();

       ShowControlBar(&m_wndMyBar, !bShow, FALSE);

}

void CMainFrame::OnUpdateViewMybar(CCmdUI* pCmdUI)

{

       // TODO: Add your command update UI handler code here

       pCmdUI->Enable();

       pCmdUI->SetCheck(m_wndMyBar.IsVisible());

}

~译q行卛_Q如果你x?/span> workshop 中的 cedit 成员变量Q如本例 workshop 中的?wi))Q只需改变 mybar 中的代码卛_?br />下蝲q接Q?font color="#0000ff">CMyBar.rar(http://www.shnenglu.com/zerolee/admin/Files.aspx)



Zero Lee 2006-09-12 12:21 发表评论
]]>
91鶹Ʒ91þþ| Ļþ| ҹþþþþ| ƷۺϾþõһҳ| Ʒ99þ99þþ| vaþþþúݺ| ۺϾþþ| ѾþþƷ99þ| þ97Ʒþþþþþò| þ99ڹ| ˺ݺۺϾþ88| þۺϳDž| 97þþþ| þĻ˿| ݺɫþþۺ| þרƷ| ޾Ʒþþþsm| þۺŷ| 99þù¶Ʒ| ɫۺϾþۺ| þþƷɭ| þˬˬƬAV鶹| Ůͬþ| þ޹˾Ʒɫ| 99þþƷ鶹| 97þþƷˬ| þþƷһĻ| ˾þô߽| þۺϸϾþúݺݺ97ɫ69| ݺݺݾþ| ƷƵþþþ| þƵᆱƷ99㽶| ҹƷþþþ| þۺϺݺۺϾþü | þ޹Ʒ123| Ʒ99þþþþ鶹| ŷ޾ƷþþavӰ| þ99һ| 鶹þ| þ91Ʒ91þС| ݹ97þ÷ѹۿ|