.


:




:

































 

 

 

 


-




C++

,

, ,

 

Java

 

C#

call back

 

2

1.

. , , . , .

, ( ) (, ""), .

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

, , .

, . , , ( ). , , , . - , , , .

" ".

class Str

{

char str[80];

unsigned char att;

int row, col;

public:

void setStr (char*);

void setAtt (unsigned char);

void setCoord (int, int);

void printStr (int=0, int=0);

};

public, , "" (private) "" (public). - - , , - , .

private protected. , . , , - (friend) , . protected private , .

- , ; , .

- . , , , . - , :

class Str

{

//

void setStr (char *s) { strcpy (str, s); }

//

};

, - , . , - , , - :

class Str

{

//

void setStr (char *s);

//

};

void Str::setStr (char*)

{

strcpy (str, s);

}

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

- C. : -, , -, C++ - .

. . - , ; this ( ) .

C++ - , , . , , , , "" . , . , . , . ~, . .

- , - :

) .

) : , void.

) , ; . X X, X* X& .

) , .

) , ; , , .

, ::. , , , . :: , ( ).

static, ; "". , , - . , , X. .

static , . - - X, X. this.

2.

, C++ , operator@, @ - . :

a) ;

b) :::, *,?:

c) ;

d) , ;

e) ( ..);

f) ++ -- ;

g) .

operator@ () , 0 2 . , - . , - , this .

@x ( x@), x Class, Class::operator@(void), ::operator@(Class); , . @x x.operator@(void), operator@(x).

x@y, x Class, Class::operator@(type y), ::operator@(Class x, type y), type , . x@y x.operator@(y), operator@(x,y).

, ( ) operator@ () .

C++ , . - .

, =, [], (), -> .

 


3

1.

, , , , , . , , .

. , . , , . , - , .

, ( ) , , . , , - . .

C++ .

2. .

:

class Base {

int *baseMember;

public:

Base (int arg=0) { baseMember = new int [arg]; }

~Base () { delete baseMember; }

};

, , , . , Base, , Derived:

class Derived: public Base {

int *derivedMember;

public:

Derived (int arg) { derivedMember = new int [arg]; }

~Derived () { delete derivedMember; }

};

class Derived: public Base , Derived Base; Base. Derived Base, Base Derived. Derived, baseMember derivedMember.

Derived : Base ( Base), Derived. .

Base , . , ( ) :

Derived::Derived (int arg): Base(arg)

{

derivedMember = new int (arg);

}

, :

Derived::Derived (int arg)

{

derivedMember = new int (arg);

}

, .

3. (protected)

: private public. , Derived, - baseMember, Derived:

void Derived::printMembers (ostream& s)

{

s<<*baseMember<<endl; //

s<<*derivedMember<<endl; //

}

- , , .. , Base - . baseMember Base, - Derived, Base Derived. C++ protected.

A , - . B A, A, B A, - B B:

class Base {

private:

int privateMember;

protected:

int protectedMember;

};

 

class Derived: public Base {

memberFunc () {

cout<<privateMember; //

cout<<protectedMember; //

}

};

 

//

Base base;

cout << base.protectedMember; //

Derived derived;

cout << derived.protectedMember; //

4.

, , ? :

class Derived: public Base { /* */ };

, - , , :

class Base

{

private:

int privateMember;

protected:

int protectedMember;

public:

int publicMember;

};

 

class privateDerived: Base {

public:

void f () { cout << privateMember; } //

void g () { cout << protectedMember; }

void h () { cout << publicMember; }

};

 

privateDerived derived;

derived.privateMember=1; //

derived.protectedMember=2; //

derived.publicMember=3; //

: . - , .

. , , , ( ) . :

class Derived: Base {

public:

Base::publicMember;

Base::protectedMember; //

protected:

Base::protectedMember;

Base::publicMember; //

};

(struct) , : , , ..

struct B: A { /* */ };

class B: public A { /* */ };

, , . , ,

struct B: A { /* */ };

class B: public A { public: /* */ };


4.

1.

. , ( ), . , ; .

: ( public private) , . :

class A { /* */ };

class B { /* */ };

class C: public A, private B { /* */};

, private . , :

C::C (int a, char * str):A(a),B(str) { /* */ }

, :

) , ;

) , , ;

) .

:

class B: public A, public A { /* */ }; //

, :

class Base { /* */ };

class A: public Base { /* */ };

class B: public Base { /* */ };

class Derived: public A, public B { /* */ };

Derived Base. , Base Derived . C++ .

, :

class Base { /* */ };

class A: public virtual Base { /* */ };

class B: public virtual Base { /* */ };

class Derived: public A, public B { /* */ };

Derived Base, - A, B.

:

) , , ; , ; , , . .

) ; ; .

, , : . . , , .

2.

: ; . :

class Base { /* */ };

class Derived: public Base { /* */ };

Derived derived;

Base base = derived;

:

Derived tmp = base; // , Derived

// Derived(Base&)

, () . , , () .

; , , . . ( , ), .

class Base { /* */ };

class Derived: public Base { /* */ };

; Derived * Base *; . .

:

class Base { /* */ };

class Derived: Base { /* */ };

.

, . : , ; , . , , (, ).


5.

1.

, , . : , , , .

, - , , , . , , Figure:

class Figure {

protected:

int lineColor;

int lineThickness;

int areaColor;

public:

FigureType type;

Figure (int color1, int color2, int width=NORM_WIDTH);

void drawElement ();

};

:

enum FigureType { LINE, POLYGON, CIRCLE };

, , :

struct Coord { int x,y; };

, Figure:

class Line: public Figure

{

Coord beg, end;

public:

Line (Coord b, Coord e, int color1, int color2);

void drawLine ();

};

class Polygon: public Figure

{

int numOfVertices;

int * vertices;

public:

Polygon (int num, int * coord, int color1, int color2);

void drawPolygon ();

};

class Circle: public Figure

{

Coord centre;

int radius;

public:

Circle (Coord c, int rad, int color1, int color2);

void drawCircle ();

};

Figure. , , . , . : , type Figure.

- . :

void Figure::drawElement ()

{

switch (type)

{

case LINE:

((Line*)this)->drawLine();

break;

case POLYGON:

((Polygon*)this)->drawPolygon();

break;

case CIRCLE:

((Circle*)this)->drawCircle();

break;

}

}

, type. , , . , , , , - .

: Figure , Figure::drawElement (), , FigureType. , Figure, , ?

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

. , , : -, Figure, .. type FigureType ( ),

void drawElement ();

virtual void draw () {}

virtual , draw () , Figure. Figure draw () , , Figure. draw() , Figure. drawLine(), drawPolygon(), drawCircle():

class Line: public Figure

{

//

virtual void draw ();

}:

class Polygon: public Figure

{

//

virtual void draw ();

}:

class Circle: public Figure

{

//

virtual void draw ();

}:

draw () , , . virtual , . : , , . , , , Circle::draw ().

, . : 5-6 ( ).

, , , . ; , , , , .

Figure, , , Figure::draw () :

Figure::draw ()

{

cout<<": figure";

exit(1);

}

C++ , Figure . , , 0:

class Figure

{

//

virtual void draw ()=0;

};

. , , " "; , .

. . , , virtual. A, , . , A , , , virtual. virtual , . , , , .

. , . . .


6.

1.

:

class Base

{

public:

Base ();

~Base ();

};

class Derived: public Base

{

char * str;

public:

Derived (int arg){ str=new char [arg]; }

~Derived (){ delete str; }

};

:

//

Base * bp= new Derived (10);

delete bp;

, delete Base, "". , , Base :

class Base

{

//

virtual ~Base (){ /* */ }

};

. , , .

2.

, , "" ( ) . Mid (). ++ :

)

#define Mid(x,y) (((x)+(y))/2)

, , . . , , .

) Mid(). :

int Mid (int x, int y){ return (x+y)/2; }

int Mid (float x, float y){ return (x+y)/2; }

int Mid (Light x, Light y){ return (x+y)/2; }

, + / Light. Mid(), . , , , .

) C++ Mid ():

template <class Type> Type Mid (Type a, Type b) { return (a+b)/2; }

Type , . : template- . . :

template <class T1, class T2> T1& myFunction (T1&, T2&);

" ".

template <class Data> class Array {

Data* a;

int size;

int lowerBound;

public:

Array (int sz, int lb=0);

~Array();

Data& operator[] (int);

};

Array template- Data , Array . : -, ? : . - Array :

template <class Data>

Array<Data>::Array (int sz, int lb=0)

{

a = new Data [size=sz];

lowerBound = lb;

}

template <class Data>

Array<Data>::~Array (){ delete a; }

Array :

Array<int> theArray (5,1);





:


: 2016-12-18; !; : 305 |


:

:

80% - .
==> ...

1582 - | 1444 -


© 2015-2024 lektsii.org - -

: 0.248 .