Konstruktor
Ostatnio zmodyfikowano 2015-06-25 22:10
Sumeek Temat założony przez niniejszego użytkownika |
Konstruktor » 2015-06-25 20:50:58 Witam, czy w tym programie konstruktorem jest OPERACJA? Jeśli nie to jak zdefiniowany jest konstruktor? Za tydzień mam kolokwium z programowania i doszedłem do wniosku że zacznę się już uczyć. Ten program jest przykładem programu jaki może się pojawić właśnie na kolosie, lecz trzeba w nim będzie wykorzystać konstruktor. Z tego co się uczyłem konstruktor definiuje się w klasie, a wywołuje się go NazwaKonstruktora::NazwaKonstruktora, lecz w tym programie nic takiego nie widzę. I nie wiem czy podczas nauki, mogę się właśnie na nim wzorować. Jeśli nie ma konstruktora, to możecie mi pomóc, przerobić ten program w taki sposób, aby konstruktor się pojawił? #include <conio.h> #include <iostream> #define N 200 using namespace std;
class ELEMENT { public: int liczba; int indeks; ELEMENT * nast; };
class TABLICA { protected: int tab[ N ]; void zaptab(); void poktab(); };
class STOS { protected: ELEMENT * pocz; void na_pocz( int, int ); void z_pocz( int &, int & ); void czyt_liste(); void usun_liste(); };
class OPERACJA : public TABLICA , STOS { int pierwsza( int ); void liczby_na_stos(); public: void operuj(); };
void TABLICA::zaptab() { srand( time( NULL ) ); for( int j = 0; j < N; j++ ) { tab[ j ] = rand() % 100; } }
void TABLICA::poktab() { cout << endl; for( int j = 0; j < N; j++ ) { cout.width( 4 ); cout << tab[ j ]; } cout << endl; }
void STOS::na_pocz( int d1, int d2 ) { ELEMENT * p = pocz; pocz = new ELEMENT; pocz->liczba = d1; pocz->indeks = d2; pocz->nast = p; }
void STOS::z_pocz( int & d1, int & d2 ) { ELEMENT * p; if( pocz != NULL ) { d1 = pocz->liczba; d2 = pocz->indeks; p = pocz->nast; delete pocz; pocz = p; } }
void STOS::czyt_liste() { ELEMENT * p = pocz; cout << "\n Liczby pierwsze w tablicy (liczba/indeks):\n\n"; int j = 0; while( p != NULL ) { cout.width( 5 ); cout << p->liczba << '/'; cout.width( 3 ); cout << p->indeks; if( ++j % 8 == 0 ) cout << "\n\n"; p = p->nast; } cout << '\n'; }
void STOS::usun_liste() { int d1, d2; while( pocz != NULL ) z_pocz( d1, d2 ); }
int OPERACJA::pierwsza( int x ) { if( x == 0 ) return 0; for( int j = 2; j <= x / 2; j++ ) { if( x % j == 0 ) return 0; } return 1; }
void OPERACJA::liczby_na_stos() { pocz = NULL; for( int j = N - 1; j >= 0; j-- ) if( pierwsza( tab[ j ] ) ) na_pocz( tab[ j ], j ); }
void OPERACJA::operuj() { char d; do { system( "CLS" ); zaptab(); liczby_na_stos(); czyt_liste(); usun_liste(); cout << "\n Jeszcze raz (t/n)?"; d = getch(); } while( d != 'n' ); }
int main() { OPERACJA obiekt; obiekt.operuj(); return 0; } |
|
Lora |
» 2015-06-25 20:54:55 |
|
Sumeek Temat założony przez niniejszego użytkownika |
» 2015-06-25 20:57:42 Rozumiem, przestudiowałem lekcję o konstruktorach, lecz podobno w podanym wyżej programie jest kostruktor, lecz ja go nie widzę. |
|
Lora |
» 2015-06-25 21:09:20 Konstruktor zawsze jest, jeśli żadnego nie zdefiniujesz to wygeneruje się kostruktor domyślny. Z tego co widzę to w tych klasach nie ma zdefiniowanych konstruktorów. BTW: kod na forum daje się w znacznikach [.cpp][./cpp] (bez kropek) |
|
akwes |
» 2015-06-25 22:10:28 Konstruktor zawsze jest, jeśli żadnego nie zdefiniujesz to wygeneruje się kostruktor domyślny.
|
To zdanie nie jest prawdziwe. Konstruktor będzie wygenerowany jedynie pod pewnymi warunkami. #include <iostream> using namespace std;
class What { private: int & ohNo; };
int main() { What what; return 0; }
prog.cpp:4:7: note: 'What::What()' is implicitly deleted because the default definition would be ill-formed
http://ideone.com/uECJtG |
|
« 1 » |