.


:




:

































 

 

 

 


Input ( ) Coord Dot Vec

12

.

C++ . -, . , , .

-, . , (, , ) , . .

, ( ) , . , . .

C++ , , . , . , , . , . , , .

. . . , Visual C++ 6.0 vfptr, vftable ( Virtual Function Table). , . , , , , . .

, . , . , ( ), .

, .

, . , , .

, ( ), , , (, , ).

, , , .

, , , . , . :

class Coord //

{

protected: //

double x, y; //

public: //

Coord () { x = 0; y = 0; } //

void Input (); //

virtual void Print (); //

};

void Coord:: Input () //

{

cout<<"\tx="; cin>>x; // x

cout<<"\ty="; cin>>y; // y

}

void Coord:: Print () //

{

cout<<"\tx="<<x<<"\ty="<<y<<'\n';

}

class Dot: public Coord //

{

char name; //

public: //

Dot (char N): Coord () { name = N; } //

void Input (); //

void Print (); //

};

void Dot:: Input () //

{

char S [ ] =" "; //

CharToOem (S, S); //

cout<<S<<name<<'\n'; //

Coord:: Input (); //

}

void Dot:: Print() //

{

char S [ ] =" "; //

CharToOem (S, S); //

cout<<S<<name<<":"; //

Coord:: Print (); //

}

class Vec: public Coord //

{

char name [ 3 ]; //

public: //

Vec (char* pName): Coord () { strncpy (name, pName, 3); name [ 2 ] = '\0'; }

void Input (); //

void Print (); //

};

void Vec:: Input() //

{

char S [ ] =" "; //

CharToOem (S, S); //

cout<<S<<name<<'\n'; //

Coord:: Input (); //

}

void Vec:: Print () //

{

char S [ ] = " "; //

CharToOem (S, S); //

cout<<S<<name<<":"; //

Coord:: Print (); //

}

Coord Dot Vec. Print () , Coord. Print () Dot Vec . Print (), .

Input () Coord Dot Vec.

Void main ()

{

Coord* pC = new Coord (); //

Dot* pD = new Dot ('D'); //

Vec* pV = new Vec ("V"); //

pC->Input (); // Coord:: Input ()

pC->Print (); // Coord:: Print ()

pC = pD; //

pC->Input (); // Coord:: Input ()

pC->Print (); // Dot:: Print ()

pC = pV; //

pC->Input (); // Coord:: Input ()

pC->Print (); // Vec:: Print ()

}

pC , . , pC , .

, , .

, pC = pD, (Coord* Dot*) , . pD = pC .

 

:

x = 1

y = 1

x = 1 y = 1

x = 2

y = 2

D: x = 2 y = 2

x = 3

y = 3

V: x = 3 y = 3

, :

1... , ;

2... .

, . . virtual , : .

, , , . , , , , . , . , .

, , . .

, , . . . .

. , ( ).

, . :

class Coord //

{

protected: //

double x, y; //

public: //

Coord () { x = 0; y = 0; } //

virtual ~Coord () { cout<<"Delete x, y\n"; } //

};

class Dot: public Coord //

{

char name; //

public: //

Dot (char N): Coord () { name = N; } //

~Dot () { cout<<"Delete name \n"; } //

};

Void main ()

{

Coord* pC; //

pC = new Dot ('D'); //

delete pC; //

}

Dot ,

delete pC;

Dot:: ~Dot () . :

Delete name

Delete x, y

, . , Coord:: ~Coord (), , Coord. :

Delete x, y

:

1... , ;

2... , , ;

3... .

, , . "", . .

, , , . , , , . :

virtual <_>(< >) = 0;

. , , - Coord , Coord , . Coord :

class Coord //

{

protected: //

double x, y; //

public: //

Coord () { x = 0; y = 0; } //

virtual void Print () = 0; //

};

class Dot: public Coord //

{

char name; //

public: //

Dot (char N): Coord () { name = N; } //

// void Print (); //

// Print ()

};

Void main ()

{

Coord C; // :

Dot D; // :

}

Print () Coord , , Coord, Print ().

. :

1... , ;

2... ;

3... ;

4... .

, , , .

, . :

<__>:: <__>(<_>)

:

;

, ;

;

;

.

 



<== | ==>
| Higher Education in Great Britain
:


: 2016-11-03; !; : 650 |


:

:

, , .
==> ...

1730 - | 1402 -


© 2015-2024 lektsii.org - -

: 0.059 .