.


:




:

































 

 

 

 


5

"", , int float. -

C++, . , , , , . , , ( , "") . C++ .

, , , . , , , .
(). , C++ float +, -, * .. , . , , . , , , trunk_module ( ), - list_of_paragraphs ( ). , , , , , , . , , . , .
- (, , ) , (, , ). , ().
:

  1. . , , (class). , . . , . . "" . .
  2. . , , .
  3. . , . , , . (friend). , .
  4. . , . ( ), . .

- . , , , , .

struct , date :

struct date { int month, day, year; }; // : , , } date today; void set_date(date*, int, int, int); void next_date(date*); void print_date(date*); //...


. , :

struct date { int month, day, year; void set(int, int, int); void get(int*, int*, int*); void next(); void print(); };


, , . :

date today; // date my_burthday; // void f() { my_burthday.set(30,12,1950); today.set(18,1,1985); my_burthday.print(); today.next(); }


, :

void date::next() { if (++day > 28) { // } }


. , .

date date, , date. struct class:

class date { int month, day, year; public: void set(int, int, int); void get(int*, int*, int*); void next(); void print(); };


public . , , . , , . Struct - class, , , . :

void date::ptinr() // , { cout << month << "/" << day << "/" year; }

date. :

void backdate() { today.day--; // } , , . , , (, 36, 1985) , , , , . , date . - , , . . , , , .

, , . :

class x { int m; public: int readm() { return m; } }; x aa; x bb; void f() { int a = aa.readm(); int b = bb.readm(); //... } member() m aa.m, - bb.m. , , . this. x this x* this; , , . this , . x : class x { int m; public: int readm() { return this->m; } }; this . this , . -, : class dlink { dlink* pre; // dlink* suc; // public: void append(dlink*); //... }; void dlink::append(dlink* p) { p->suc = suc; // , p->suc = this->suc p->pre = this; // this suc->pre = p; // , this->suc->pre = p suc = p; // , this->suc = p } dlink* list_head; void f(dlink*a, dlink *b) { //... list_head->append(a); list_head->append(b); } , 7. , this, pre suc (, ). dlink, dlink::append() . C++ class, .

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

class date { //... date(int, int, int); }; , . , : date today = date(23,6,1983); date xmas(25,12,0); // // (xmas - ) date my_burthday; // , . , .: class date { int month, day, year; public: //... date(int, int, int); // date(char*); // date(int); // , date(); // : }; , (#4.6.7). , : date today(4); date july4(" 4, 1983"); date guy("5 "); date now; // , overload. , overload . date . "", - , - , , , . , , . - . date , " : today" (). class date { int month, day, year; public: //... date(int d =0, int m =0, int y =0); date(char*); // }; date::date(int d, int m, int y) { day = d? d: today.day; month = m? m: today.month; year = y? y: today.year; // , //... } , " ", . day mounth , , year . , . 1 . ..(year==-1) 1 . .. (year==1), . . , . : date d = today; // , , . X , X(X&). #6.6.

, , , . , , . X ~X() (" "). , (. #3.2.6), . , , , :

class char_stack { int size; char* top; char* s; public: char_stack(int sz) { top=s=new char[size=sz]; } ~char_stack() { delete s; } // void push(char c) { *top++ = c; } char pop() { return *--top;} } char_stack , : void f() { char_stack s1(100); char_stack s2(200); s1.push('a'); s2.push(s1.pop()); char ch = s2.pop(); cout << chr(ch) << "\n"; }

f(), char_stack s1, 100 , s2, 200 . f() .

Inline

. , , - , . , , , . , ( ) , , .
, inline- . , ( ) , inline. , , , char_stack, , ! , , . , , . , .
inline . :

char char_stack { int size; char* top; char* s; public: char pop(); //... }; inline char char_stack::pop() { return *--top; }

  5.3.1
  5.3.2

? , . , " ", . , , . , .
: , , , , .. "", , . , , . ( , ) .
(. #4.4: ). , , . , , , . . , , .

, . , 3. :

struct name { char* string; char* next; double value; }; table: // table.h class table { name* tbl; public: table() { tbl = 0; } name* look(char*, int = 0); name* insert(char* s) { return look(s,1); } }; , 3 , . table, table .. : #include "table.h" table globals; table keywords; table* locals; main() { locals = new table; //... } table::look(), name : #include name* table::look(char* p, int ins) { for (name* n = tbl; n; n=n->next) if (strcmp(p,n->string) == 0) return n; if (ins == 0) error(" "); name* nn = new name; nn->string = new char[strlen(p)+1]; strcpy(nn->string,p); nn->value = 1; nn->next = tbl; tbl = nn; return nn; } table, , , . - , , table, : class table { name** tbl; int size; public: table(int sz = 15); ~table(); name* look(char*, int = 0); name* insert(char* s) { return look(s,1); } }; , , . , , , . , . -: table::table(int sz) { if (sz <0) error(" "); tbl="new" name*[size="sz];" for (int i="0;" inext) { delete n->string; delete n; } delete tbl; } name table::~table(). , (#3.1.3): #include name* table::look(char* p, int ins) { int ii = 0; char* pp = p; while (*pp) ii = ii<<1 ^ *pp++; if (ii < 0) ii="-ii;" ii %="size;" for (name* n="tbl[ii];" n; n="n-">next) if (strcmp(p,n->string) == 0) return n; if (ins == 0) error(" "); name* nn = new name; nn->string = new char[strlen(p)+1]; strcpy(nn->string,p); nn->value = 1; nn->next = tbl[ii]; tbl[ii] = nn; return nn; } , , - . . , . . , , , . ( ), () , , . , , C++ , ? , ? , , , , , ? - . , , , , ( ) . , "" . , "" , , . , , , . inline-, . , C C++ ( C struct , C++ ). C++ .

( ) , ( ). , . , ; . , , .
intset, " ":

class intset { int cursize, maxsize; int *x; public: intset(int m, int n); // , m int' 1..n ~intset(); int member(int t); // t ? void insert(int t); // "t" void iterate(int& i) { i = 0; } int ok(int& i) { return i void error(char* s) { cerr << "set: " << s << "\n"; exit(1); }

intset main(), . , . , :

main(int argc, char* argv[]) { if (argc!= 3) error(" "); int count = 0; int m = atoi(argv[1]); // int n = atoi(argv[2]); // 1..n intset s(m,n); while (count maxsize) error(" "); int i = cursize-1; x[i] = t; while (i>0 && x[i-1]>x[i]) { int t = x[i]; // x[i] [i-1] x[i] = x[i-1]; x[i-1] = t; i--; } } : int intset::member(int t) // { int l = 0; int u = cursize-1; while (l <= u) { int m="(l+u)/2;" if (t < x[m]) u="m-1;" else if (t> x[m]) l = m+1; else return 1; // } return 0; // } , , , , intset . , ( , , intset -, ). : iterate() , ok() , , next() , : class intset { //... void iterate(int& i) { i = 0; } int ok(int& i) { return iiterate(var); while (set->ok(var)) cout << set->next(var) << "\n"; }

 



<== | ==>
| ()
:


: 2016-10-07; !; : 248 |


:

:

: , .
==> ...

1360 - | 1314 -


© 2015-2024 lektsii.org - -

: 0.024 .