(一)
慎用多重继承,因为那样的话可能会造成歧义。。
class BorrowableItem {
public:
void checkOut();
};
class ElectronicGadet {
private:
bool checkOut() const;
};
class MP3Player : public BorrowableItem
...
分类:
编程语言 时间:
2014-07-08 20:52:31
阅读次数:
134
(一)
(1)private继承意味着“根据某物实现出”,只有实现部分被继承,接口部分应略去;
(2)它只在软件“实现”层面上有意义,在软件“设计”层面上没有意义。
(3)private继承而来的基类成员都会在派生类中成为private属性,纵使它们在base class中原本是protected或public属性;
(4)如果类之间是private继承关系,编译器不会自动将一个派生类对象...
分类:
编程语言 时间:
2014-07-08 16:56:58
阅读次数:
275
非强制性,但是个好习惯当使用连锁赋值时很有用x=y=z=10;class Window{ public: Window& operator=(int size) { ... return *this; }}这个规则适用于 -,+, +=,-= etc
分类:
编程语言 时间:
2014-07-06 16:14:49
阅读次数:
264
(一)
public继承是“is-a“的关系,而复合有”has-a“或”根据某物实现出(is-implemented-in-terms-of)“的意思——当复合发生在应用域内的对象之间,表现出has-a关系;当它发生于实现域内则是表示“根据某物实现出”的关系。
应用域部分,相当于你塑造的世界中的某些事物,例如人,汽车等。
后者的对象则是实现细节人工产品(这产品现实世界中是没有的),像什么...
分类:
编程语言 时间:
2014-07-06 11:47:13
阅读次数:
215
条款1:视C++为一个语言联邦
1.1 将C++视为一个由相关语言组成的联邦而非单一语言.
1.2 视C++由四块次语言组成:
C:区块,语句,预处理器,内置数据类型,数组,指针 等等来自于C语言的特性.
Object-Oriented C++:封装,继承,多态,virtual函数 等等面向对象特性.
Template C++:泛型编程.
STL:标准库.
条款2: ...
分类:
编程语言 时间:
2014-07-06 09:20:51
阅读次数:
213
在构造函数中不要调用virtual函数,调用了也不会有预期的效果。举个例子class Transaction{ public: Transaction() { log(); } virtual void log() =0;}class BusinessTran...
分类:
编程语言 时间:
2014-07-05 20:43:00
阅读次数:
209
(一)首先有下面的继承体系:
class B {
public:
void mf();
...
};
class D : public B {...};
D x;
以下行为:
B* pB = &x;
pB->mf();
异于以下行为:
D* pD = &x;
pD->mf();
上面两种行为产生的结果不一定相同。看下面这种...
分类:
编程语言 时间:
2014-07-04 09:04:30
阅读次数:
253
由于重新定义继承而来的non-virtual函数是不正确的(见上一个条款),所以这个条款就将问题局限于:绝不重新定义继承一个带有缺省参数值的virtual函数。
(一)
virtual函数是动态绑定的,而缺省参数却是静态绑定。
对象的所谓静态类型,是它在程序中被声明时所采用的类型。
你可能会在“调用一个定义于derived
class 内的virtual函数”的同时,却使用了ba...
分类:
编程语言 时间:
2014-07-04 08:23:12
阅读次数:
412
通常,我们更喜欢重用一个对象而不是重新创建一个。如果对象是不可变的,它就始终可以被重用。下面是一个反面例子,JoshuaBloch明确指出[DON‘TTOTHIS]:Strings=newString("stringette");该语句每次执行时都创建一个新的实例。String构造器中的参数"stringette"本身是一个实例..
分类:
其他好文 时间:
2014-07-02 15:33:43
阅读次数:
231
游戏中的人物伤害值计算问题。
(一)方法(1):一般来讲可以使用虚函数的方法:
class GameCharacter {
public:
virtual int healthValue() const; //返回人物的体力值,派生类可以做出修改
...
}; 这确实是一个显而易见的设计选择。但因为这样的设计过于显而易见,可能不会...
分类:
编程语言 时间:
2014-07-01 15:39:40
阅读次数:
172