2010年6月18日
摘要: c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class MyClass{public:MyClass( int num );}....MyClass obj = ... 阅读全文
posted @ 2010-06-18 17:46 chao_yu 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和... 阅读全文
posted @ 2010-06-18 17:40 chao_yu 阅读(1083) 评论(0) 推荐(0) 编辑
摘要: 本文引入作者Paul S. R. Chisholm关于Pure Virtual Function Called问题的深入见解,要说明的是翻译部分对原文进行了删减,很遗憾的去除了作者一些幽默风格的解说,直截了当地说明问题。面向对象 C++: 程序员的观点 在C++中,虚函数允许关联类实例在运行时拥有不同的行为(也称作运行时多态):class Shape {public:virtual double... 阅读全文
posted @ 2010-06-18 14:36 chao_yu 阅读(1139) 评论(0) 推荐(0) 编辑
摘要: 在C++中,存在类型转换,通常意味着存在缺陷(并非绝对)。所以,对于类型转换,有如下几个原则:(1)尽量避免类型转换,包括隐式的类型转换(2)如果需要类型转换,尽量使用显式的类型转换,在编译期间转换(3)避免使用reinterpret_cast和老式的强制类型转换操作符通常,隐式的类型转换会导致警告,需要重视这些警告,并使用显式的类型转换代替,例如static_cast代替一些算术类型转换。在C+... 阅读全文
posted @ 2010-06-18 11:47 chao_yu 阅读(2351) 评论(0) 推荐(0) 编辑
摘要: 昨天在针对webcore中TimerBase的堆操作部分进行修改,目的在于解决切台死机的问题时引发了这个新问题,通过查找目前提到的最多的原因有两种:(1)在基类的构造函数或析构函数中直接或间接的调用纯虚函数(2)通过野指针调用到虚函数并列举如下:针对“在基类的构造函数或析构函数中直接或间接的调用纯虚函数 ”:    class Base{public:Base(){call... 阅读全文
posted @ 2010-06-18 10:59 chao_yu 阅读(3228) 评论(0) 推荐(0) 编辑