
程序
文章平均质量分 58
fengxinziyang
这个作者很懒,什么都没留下…
展开
-
const方法的学习
<br /> 要保证一个方法不会修改数据成员,具体方法就是将方法本身用const关键字来标记。<br /> 将一个方法标记为const,这表明了与客户代码的一个合约,即保证你不会在此方法中尝试修改对象的内部值。如果把一个方法声明为const,但是在方法中修改了数据成员,编译器会报错。而且不能把static方法声明为const,因为静态方法根本没有相应的类实例,因此他们不可能修改内部成员数据。<br />有时候你在编写一个逻辑上的const方法,但实际上它会修改对象的数据成员。则将该对象数原创 2010-09-14 10:44:00 · 859 阅读 · 0 评论 -
HTML控件与Web服务器控件异同
<br />转载http://blog.youkuaiyun.com/ansontang1217/archive/2009/09/12/4545399.aspx原创 2010-12-01 08:46:00 · 484 阅读 · 0 评论 -
c++ 类型强制转换
<br />类型强制转换<br />c++提供了四种新的类型强制转换方法:static_cast、dynamic_cast、const_cast、reinterpret_cast<br />(1)const_cast<br />const_cast是最直接的类型强制转换。使用const_cast可以去除变量的常量性。<br />void set(char* str)<br />{<br />}<br />void get(const char* str)<br />{<br原创 2010-09-27 09:53:00 · 1412 阅读 · 0 评论 -
c++中的explicit关键字
c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?<br /><br />如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:<br />class MyClass<br />{<br />public:<br /> MyClass( int num );<br />}<br />....<br />转载 2010-09-27 17:16:00 · 1331 阅读 · 0 评论 -
effective c++ 条款39: 避免 "向下转换" 继承层次
<br />条款39: 避免 "向下转换" 继承层次<br /> 条款39: 避免 "向下转换" 继承层次<br /> <br />在当今喧嚣的经济时代,关注一下我们的金融机构是个不错的主意。所以,看看下面这个有关银行帐户的协议类(Protocol class )(参见条款34):<br />class Person { ... };<br />class BankAccount {<br />public:<br /> BankAccount(const Person *prim原创 2010-09-27 09:23:00 · 645 阅读 · 0 评论 -
effective c++ 条款37: 决不要重新定义继承而来的非虚函数
<br />条款37: 决不要重新定义继承而来的非虚函数<br /> 条款37: 决不要重新定义继承而来的非虚函数<br /> <br />有两种方法来看待这个问题:理论的方法和实践的方法。让我们先从实践的方法开始。毕竟,理论家一般都很耐心。<br />假设类D公有继承于类B,并且类B中定义了一个公有成员函数mf。mf的参数和返回类型不重要,所以假设都为void。换句话说,我这么写:<br />class B {<br />public:<br /> void mf();<br />原创 2010-09-24 14:46:00 · 519 阅读 · 0 评论 -
effective c++ 条款36: 区分接口继承和实现继承
<br />条款36: 区分接口继承和实现继<br /> 条款36: 区分接口继承和实现继承<br /> <br />(公有)继承的概念看起来很简单,进一步分析,会发现它由两个可分的部分组成:函数接口的继承和函数实现的继承。这两种继承类型的区别和本书简介中所讨论的函数声明和函数定义间的区别是完全一致的。<br />作为类的设计者,有时希望派生类只继承成员函数的接口(声明);有时希望派生类同时继承函数的接口和实现,但允许派生类改写实现;有时则希望同时继承接口和实现,并且不允许派生类改写任何东西。<br原创 2010-09-24 14:10:00 · 407 阅读 · 0 评论 -
effective c++ 条款38: 决不要重新定义继承而来的缺省参数值
<br />条款38: 决不要重新定义继承而来的缺省参数值<br /> 条款38: 决不要重新定义继承而来的缺省参数值<br /> <br />让我们从一开始就把问题简化。缺省参数只能作为函数的一部分而存在;另外,只有两种函数可以继承:虚函数和非虚函数。因此,重定义缺省参数值的唯一方法是重定义一个继承而来的函数。然而,重定义继承而来的非虚函数是一种错误(参见条款37),所以,我们完全可以把讨论的范围缩小为 "继承一个有缺省参数值的虚函数" 的情况。<br />既然如此,本条款的理由就变得非常明显原创 2010-09-24 15:14:00 · 483 阅读 · 0 评论 -
纯虚函数,虚函数
<br />虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数!<br />纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!<br />虚函数<br />引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。<br />class Cman<br />{<br />public:<br /> virtual void Eat(){……};<br /> void Move();<br />private:<转载 2010-09-24 14:38:00 · 511 阅读 · 0 评论 -
effective c++ 条款35: 使公有继承体现 "是一个" 的含义
<br />条款35: 使公有继承体现 "是一个" 的含义<br /> 条款35: 使公有继承体现 "是一个" 的含义<br /> <br />在"Some Must Watch While Some Must Sleep"( W. H. Freeman and Company, 1974)一书中,William Dement讲了一个故事,故事说的是他如何让学生们记住他的课程中最重要的部分。"据说,",他告诉他的学生,"一般的英国学生除了记得Hastings战役发生在1066年外,再也不记得原创 2010-09-24 13:29:00 · 472 阅读 · 0 评论 -
effective c++ 条款26: 当心潜在的二义性
<br />条款26: 当心潜在的二义性条款26: 当心潜在的二义性<br /> <br />每个人都有思想。有些人相信自由经济学,有些人相信来生。有些人甚至相信COBOL是一种真正的程序设计语言。C++也有一种思想:它认为潜在的二义性不是一种错误。<br />这是潜在二义性的一个例子:class B; // 对类B提前声明 // class A {public: A(const B&); // 可以从B构造而来的类A};class B {public:原创 2010-09-16 11:03:00 · 516 阅读 · 0 评论 -
effective c++ 条款18: 争取使类的接口完整并且最小
<br />条款18: 争取使类的接口完整并且最小 条款18: 争取使类的接口完整并且最小<br /> <br />类的用户接口是指使用这个类的程序员所能访问得到的接口。典型的接口里只有函数存在,因为在用户接口里放上数据成员会有很多缺点(见条款20)。<br />哪些函数该放在类的接口里呢?有时这个问题会使你发疯,因为有两个截然不同的目标要你去完成。一方面,设计出来的类要易于理解,易于使用,易于实现。这意味着函数的数量要尽可能地少,每一个函数都完成各自不同的任务。另一方面,类的功能要强大,要方便使用转载 2010-09-14 09:23:00 · 385 阅读 · 0 评论 -
effective c++ 条款22: 尽量用“传引用”而不用“传值”
条款20: 避免public接口出现数据成员条款20: 避免public接口出现数据成员首先,从“一致性”的角度来看这个问题。如果public接口里都是函数,用户每次访问类的成员时就用不着抓脑袋去想:是该用括号还是不该用括号呢?——用括号就是了!因为每个成员都是函数。一生中,这可以避免你多少次抓脑袋啊!你不买“一致性”的帐?那你总得承认采用函数可以更精确地控制数据成员的访问权这一事实吧?如果使数据成员为public,每个人都可以对它读写;如果用函数来获取或设定它的值,就可以实现禁止访问、只读访问和读原创 2010-09-15 09:40:00 · 525 阅读 · 0 评论 -
malloc和calloc学习
函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。 malloc()函数有一个参数,即要分配的内存空间的大小:void *malloc(size_t size); calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。void *calloc(size_t numElements,size_t sizeOfElement); 如果调用成功,函数malloc()和函数calloc()都将返回所分配的内存空间的首地址。函数m原创 2010-09-14 17:29:00 · 501 阅读 · 0 评论 -
GPL 与 LGPL 的区别
GPL 与 LGPL 的区别 关键字: license,gpl ,lgpl 在写这篇文章之前, 我声明我这个博客里的所有内容,想法与代码为LGPL。LGPL stands for GNU Lesser General Public License.(绿色)GPL stands for GNU General Public License.(红色)从图片上看是完全一样的 可是颜色不一样。可不要小看这个颜色的区别。概括来讲,LPGL版权 允许个人或企业使用,修改转载 2010-09-14 14:23:00 · 712 阅读 · 0 评论 -
Google C++ Style Guide---Header Files
<br />头文件 通常,每一个.cc文件(C++的源文件)都有一个对应的.h文件(头文件),也有一些例外,如单元测试代码和只包含main()的.cc文件。 正确使用头文件可令代码在可读性、文件大小和性能上大为改观。 下面的规则将引导你规避使用头文件时的各种麻烦。 <br />1. #define的保护 <br />所有头文件都应该使用#define防止头文件被多重包含(multiple inclusion),命名格式当是:<PROJECT>_<PATH>_<FILE>_H_ 为保证唯一性,头文件的命名应基转载 2010-10-07 11:04:00 · 707 阅读 · 0 评论