ÃæÏò¶ÔÏó³ÌÐòÉè¼Æ¸´Ï°ÊÔÌâ(´ð°¸) ÏÂÔØ±¾ÎÄ

wordÍêÃÀ¸ñʽ

}

(1)Êä³ö½á¹ûΪ: Instrument::Print Instrument::Print (2)Êä³ö½á¹ûΪ: Guitar::Print Piano::Print 10¡¢ ¶ÔÐ麯ÊýʹÓöÔÏóÖ¸Õë»òÒýÓõ÷ÓÃ,ϵͳʹÓÃ__¶¯Ì¬__Áª±à:ʹÓöÔÏóµ÷ÓÃʱ,ϵͳʹÓÃ__¾²Ì¬__Áª±à¡£

11¡¢ ½«ÏÂÁгÌÐò²¹³äÍêÕû¡£ #include class convert {

public:

convert(double I){va11=I;}

____ virtual void compute()=0; ____ protected: double val1; double va12: };

//liters to gallons

class l_to_g:public convert {

public:

__ l_to_g(double I):convert(I){} ____ void compute() {

va12=va11/3.7854;

cout<

//Fahrenheit to Celsius class f_to_c:public convert {

public:

f_to_c(double I):convert(I){} void& compute() {

va12=(va11-32)*5/9;

cout<

¾«ÐÄÕûÀí ѧϰ°ïÊÖ

wordÍêÃÀ¸ñʽ

void fun(__convert& f____) {

f.compute(); }

void main() {

l_to_g lgobj(4); f_to_c fcobj(70); fun(lgobj); fun(fcobj); }

12¡¢ ÏÂÁгÌÐòµÄÔËÐнá¹ûÈçÏÂ: Derive1's Print() called. Derive2's Print() caIIed. ¸ù¾Ý½á¹û½«³ÌÐò²¹³äÍêÕû¡£ #include class Base {

public:

Base(int I){b=I;}

__ virtual Print()=0; ____ protected: int b; }

class Derive1:public Base {

public:

__ Derive1(int& I):Base(I){} ___ void Print() {

cout<<\ } };

class Derive2:public Base {

public:

Derive2(int I):Base(I){}

void Print(){cout<<¡°Derive2¡¯s Print() called.¡±<

void fun(__Base *obj ____) {

obj->Print(); };

¾«ÐÄÕûÀí ѧϰ°ïÊÖ

wordÍêÃÀ¸ñʽ

void main() {

Derive1 *d1=new Derive1(1); Derive2 *d2=new Derive2(2); fun(d1); fun(d2); }

13¡¢ ÔÚÒ»¸ö³ÉÔ±º¯ÊýÄÚµ÷ÓÃÒ»¸öÐ麯Êýʱ,¶Ô¸ÃÐ麯ÊýµÄµ÷ÓýøÐÐ_¶¯Ì¬__Áª±à¡£ 14¡¢ ´øÓÐ__´¿Ð麯Êý__µÄÀà³ÆÎª³éÏóÀà,ËüÖ»ÄÜ×÷Ϊ__»ùÀà__À´Ê¹Óá£

4.3¼ò´ðÌâ

A¡¢³ÉÔ±º¯ÊýÖØÔØÓëÐ麯ÊýµÄÇø±ð B¡¢¾²Ì¬Áª±àºÍ¶¯Ì¬Áª±àµÄº¬Òå

C¡¢´¿Ð麯ÊýºÍ³éÏóÀàµÄ¶¨Òå¼°Æä¹ØÏµ D¡¢³éÏóÀàµÄÌØµã

4.4¶Á³ÌÐòÌâ

1¡¢Ð´³öÏÂÁгÌÐòµÄÔËÐнá¹û¡£ #include class Base {

public:

Base(int i){x=i;cout<<\ virtual ~Base(){cout<<\private: int x; };

class Derived :public Base {

public:

Derived(int i,int j):Base(i){y=j;cout<<\ ~Derived(){cout<<\private: int y; };

void main() {

Base *b1=new Base(15); delete b1;

Base *b2=new Derived(20,25); delete b2;

¾«ÐÄÕûÀí ѧϰ°ïÊÖ

wordÍêÃÀ¸ñʽ

}

´ð°¸ Base:15 ~Base:15 Base:20 Derived:25 ~Derived:25 ~Base:20

2¡¢ ÔĶÁÏÂÁгÌÐò,»Ø´ðºóÃæÌá³öµÄÎÊÌâ¡£ #include class Base {

public:

Base():x(0),y(0){}

Base(int I,int j):x(I),y(j){} int GetX() const{return x;} int GetY() const{return y;}

virtual void Print() const{cout<<\ virtual ~Base(){Print();} private: int x,y; };

class Derived :public Base {

public:

Derived():z(0){}

Derived(int I,int j,int k):Base(I,j),z(k){} void Print() const

{cout<<\ ~Derived(){Print();} private: int z; };

void main() {

Base *d1=new Derived; d1->Print();

Base *d2=new Derived(10,20,30); d2->Print(); delete d2; delete d1; }

¾«ÐÄÕûÀí ѧϰ°ïÊÖ