.


:




:

































 

 

 

 





( )

, .

#include <iostream.h>

using namespace std;

class A //

{ int aa;

public:

A() {cout<<"1 A"<<endl;}

A(int AA): aa(AA) {cout<<"2 A"<<endl;}

~A() {cout<<" A"<<endl;}

};

class B: virtual public A // ( D)

{ char bb;

public:

B() {cout<<"1 B"<<endl;}

B(int AA,char BB): A(AA), bb(BB)

{cout<<"2 B"<<endl;}

~B() {cout<<" B"<<endl;}

};

class C: virtual public A // ( D)

{ float cc;

public:

C() {cout<<"1 C"<<endl;}

C(int AA,float CC): A(AA), cc(CC)

{cout<<"2 C"<<endl;}

~C() {cout<<" C"<<endl;}

};

class D: public C,public B // (II )

{ int dd;

public:

D() {cout<<" 1 D"<<endl;}

D(int AA,char BB,float CC,int DD):

A(AA), B(AA,BB), C(AA,CC), dd(DD)

{cout<<" 2 D"<<endl;}

~D() {cout<<" D"<<endl;}

};

void main()

{ D d(1,'a',2.3,4);

D dd;

}

:

2 A ( d)

2 C

2 B

2 D

1 A ( dd)

1 C

1 B

1 D

D ( d)

B

C

A

D ( d)

B

C

A

.

d dd D , B C, , : class D: public B, public C. , :

class A{ };

class B1: virtual public A{ };

class B2: virtual public A{ };

class B3: public A{ };

class C: public B1, public B2, public B3 { };

,

1 2 ( ) 3.

37. .

-

, . . , . , , . virtual = 0;

, -

. , , , , . , .

. base , base a;

base *p= new base;

. rect b;

base *p=&b;

base &p=b;

, , -

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

class base

{ -

public:

virtual ~base() = 0;

-

}

base::~base()

{ }

base , -

.

. -

, , .

Proxi-.

proxi-. Proxi- , . proxi- :

- , ;

- proxi- ;

- , proxi-

// cls.h cls

class cls

{ int val;

public:

cls(int);

set(int);

int get() const;

};

// cls

#include "cls.h"

cls:: cls(int v) {val=v;}

cls:: set(int v) {val=v;}

int cls:: get() const {return val;}

// prox.h proxi- prox

class cls; // cls

class prox

{ cls *pr; //

public:

prox(int);

set(int);

int get() const;

~prox();

};

// proxi- prox

#include "prox.h"

#include "cls.h"

prox:: prox(int vv) {pr=new cls(vv);}

prox:: set(int vv){pr->set(vv);}

int prox:: get() const {return pr->get();}

prox:: ~prox(){delete pr;}

// cls proxi- prox

#include <iostream>

using namespace std;

#include "prox.h"

int main()

{ prox obj(1);

cout<< val cls = <<obj.get()<<endl;

obj.set(2);

cout<< val cls = <<obj.get()<<endl;

}

:

val cls = 1

val cls = 2

main()- prox.cpp,

cls. , private- cls .





:


: 2016-07-29; !; : 479 |


:

:

.
==> ...

1390 - | 1367 -


© 2015-2024 lektsii.org - -

: 0.021 .