. . ++ :
While (GetMessage()) {
TranslateMessage();
DispatchMessage(); // ,
}
GetMessage , , , , . DispatchMessage , .
, , . , (RIT, Raw Input Thread).
: , , . , , . Windows. , RIT, . , . , , . , ( OnMouseClick). : , GetMessage true. WM_CLOSE , .
12. - : , , , , , , , . - .
, , , . : 1) , ; 2) - ; 3) . .
. 4 : , , . , ( , ): , .
, , , .
, , , , :
, .
.
|
|
, .
, ; , .
, , . , , , .
, . : ( is-a) ( part of). .
is-a . ( ), . , . : , , .
part of . . : , : , , .
, . , .
, . , , . , . (, Smalltalk) . , , .
, . , . , . , , ( ) ( ). . , OO, , , .
() , , () , .
, , () . , , , . : (). . , , . , , , , , .
|
|
13. . : , , . : . C++. , .
. : . , ( ), . , . Simula .
, ; . .
. , , , , , . , , . , , .
: , . , - ; . , . , . , , . , , ( , ) .
: ( ) ( ) . , -, . (, ). , . , .
: ; . , .
: , .
: . () ( ). , . , , , . , , , . :
(public) . (protected) , . (private) . .
: , (). ( : , ) ( : ).
|
|
++. ANSI/ISO ++ class. .
class _ { // public: // } _; | class myClass { int a; public: void set_a(int num); int get_a();}; |
_ .
, : . , . , . . , (.. ).
14. C++. () ( ). .
++ . , . / . :
void main {
MyClass Object; // MyClass
SomeFunction(Object); // SomeFunction
// MyClass
Return 0;}
( ), ( MyClass), Object ( Main). , SomeFunction ( return).
: auto . , . : 1) auto int a; 2) int a;
new:
myClass *pObject = new MyClass;
someFunction(*pObject);
delete pObject;
new myClass. pObject. . Delete pObject . someFunction(myClass *c), , , .. new . .
new delete. , , . , . delete , . , (-, ) . , , NULL. : , .
|
|
, ( ) : ( ), . . const. , .
15. (-) C++. : (static) , (immutable) C++.
, , - (memberfunction). .
- , - . - . , .
- (static), . . - this. - . - const () volatile ().
(virtual function) . virtual . , , , . , " , ", . . , .
, -. , . , , .
( const). , . , -. , - , . :
class X {
int some_var; public:
int f1 () const; // - };
const , . , , -, , . ( mutable). -.
16. C++. - . . .
/ . . .., . . , . ().
: . , . , . .
, . . , .
|
|
(, ) , / . , . .
, . .
- . . ~ (), . : ++.
() .
C++ . ( return). , , . .
-. . ( ) . - , , .
. . virtual , , . virtual , .
17. . . . C++. .
, , , , , . , . - , , . , , , , . , , , . .., , .
, . , , .. "" . ( ).
, , .
.., , . , .
C++ , , , . , , . , , .
: (*.c) (*.h). .
, , . . , . , extern.
, , . . .
// complex.h - .
// ,
// .
typedef struct {
double Re, Im;
} complex;
extern void OutComplex(complex);
#include . .
18. () . . . . C++. . new .
. , . SmallTalk, JavaScript VBScript, - C++ Object Pascal. () -, . , .. . .., , (/ , , , .. ). .. , , . C++ , .
(+ ): 1). .. , , , , . 2). . , . 3). , . 4). , .
( ): 1). , , . 2). . 3). ;
(+ ): .
( ): .
19. () C++. const_cast, reinterpret_cast, static_cast, dynamic_cast.
. :
() //
() // ++
const_cast() const ( volatile). . , - const, . , const_cast , const . - const :
Void f() const // - myClass
{ Somevalue++; //
Const_cast<myClass*>(this)->SomeValue++; // !!}
myClass , const f().
reinterpret_cast() , . : reinterpret_cast<Type>(Object);
Type , , , . Object Type, , . ( ). :
int func(void* p)
{ Return reinterpret_cast<int>(p) }
int main()
{ int value=8;
int j=Func(reinterpret_cast<void*>(value));// 8
int j=Func(reinterpret_cast<void*>(&value)); // (-, 1234567)
}
dynamic_cast() , ( ) . , (.. ).
: dynamic_cast <Type> (Object)
Type , . Object . Type . Object . dynamic_cast Object . bad_cast, , . dynamic_cast . , . (upcast). (downcast).
dynamic_cast(), static_cast() (.. , ).
dynamic_cast(). Type, Object . C++ , , (, float double).
20. C++. .
, , . ++ , .
++, , . . ( , ). const (. void f(char * c) void f(const char * c) ). ( ), .
, , . -. , , . - :
:: operator ( )
{ }
. . . :
.
.
: .::?
.
:
, , - . .., , , , . ( + MyClass):
MyClass MyClass::operator + (MyClass * Src)
, .
21. . (template) C++ .
++ template. , - . , , , . -, , .
, .
, .. , .
. , , , , , .
: template <class >
, , , . , .
(, ) , .
template <class T> < > < > ( )
class T , . :
Template <class T> void sort (T a[], int n) {}
// sort - , ,
// -, sort <int> (a, 10); //
// sort <student>(a, 10); // 10
:
- (), , , .
- , . , , , .
- template, , (< >); class. class, : , . , .
- . , , . .
- , template <class T>, , , , .
- - template <class T>, , , .
22. C++.
, . .
:
template <class T> void sort (T a[], int n) {}
, :
void sort (student a[], int n) {}
sort:
1) sort <int> (a[], 10); // , ,
2) sort <student> (a[], 10); // , , .
.
- , . template, , . , .. , .
, . . . , , . , . :
:
1: template <class A, class B> class SomeClass {};
: SomeClass <int, char> a;
2: template < > class SomeClass <int, char> {};
3: template <class A> class SomeClass <A, char> {};
:
SomeClass <int, char> a; // 2
SomeClass <char, char> b; // 3
SomeClass <float, short> c; // 1
.. , .
23. C++. . .
, ( ). - - , - - . . . . ( ).
; . , , . . - . / . . . : .
. , , , . . , . .., . , virtual . , - . ( ). , , , , . , . .. , , , . , , , , , .
:
, -. .. -, . -.
:
Person.GetName(), - Student.GetID() Prepod.GetAddress().
Person *p = new Student;
p -> GetName(); // OK
p -> GetID(); // Error
dynamic_cast static_cast. , .. :
static_cast<student> (p) -> GetID(); // OK
(student *) (p) -> GetID(); // OK
24. . C++. .
. , , . , , . 0. :
Class CShape
{ public:
virtual void View(void) = 0; //
}
Class CTriangle: public CShape
{ public:
void View(void); //
}
, . , , .
( ++) , , . .. . , . :
Class Iperson { virtual void Get_fname(void) = 0 }; //
Class Istudent { virtual void Get_ID(void) = 0 }; //
Class <Name class>: public person, public student //
{ void Get_fname(void);
void Get_ID(void);}
, . , , . . , . , / .