' , , . ' . V- '. vptr- . ³ ' . ' vptr , . vptr , '. Speak Dog. ' 䳺 , , . , ' . ³ . ' , , , . ϳ , ' . : , . , ' , ' . clone(), . ³ ' '. clone() , , clone() ' .
class Mammal{
public:
virtual Mammal* Clone(){return new Mammal (*this);}
};
class Dog:public Mammal{
public:
Mammal *Clone(){retrun new Dog(*this)};
};
V-, .
: , "" "". fly(); Mammal "", 2 " " "" "", . "" . 䳺 " " "". , "", 쳺 .
|
|
':
- - "" "" "". - - fly .
- - - move , - - fly. - move - , - fly - .
- - fly , - - . -
class Horse{
public:
void Gallop();
void Winny();
virtual void Fly();
};
class Pegasus:public Horse{
public:
void Fly(...);
}; // ,
.
. .
class Pegasus:public Horse, public Bird{...};
' . ' . . , , .
class A{
public:
int F();
};
class B{
public:
int F();
};
class C: public A, public B{
A::F();
B::F();
};
.
³
, . ++ , 2 , . . . ,
class Animal{...};
class Horse:Virtual public Animal{...};
class Bird:virtual public Animal{...};
class Pegasus: public Horse, public Bird{...};
: ' - . ' . .
clsass B{
public:
int Q();
};
class C: virtual public B{
public:
Q();
};
class D:public C{...};
class F:public D{
B::Q(); // B
Q(); //
};
- Q B . F - Q . - Q B . ++ . . . . '. , . ³ .
|
|
, .
virtual void
- , . '. , . - ( ) - , .
....
. г . .