[c++] Konstruktory konstruktory
Ostatnio zmodyfikowano 2015-09-17 16:12
wojownik266 Temat założony przez niniejszego użytkownika |
[c++] Konstruktory konstruktory » 2015-09-17 11:56:36 Na listingu poniżej widnieje klasa z trzema konstruktorami. O ile znam się na programowaniu, konstruktory te to: konstruktor domyślny, konstruktor kopiujący i konstruktor dwu parametrowy. Teraz proszę mi powiedzieć jakie instrukcje powinny znaleźć się w ciałach tych konstruktorów? Wiem że jest to uzależnione od tego co program ma robić itp. Przyjmijmy że to co program ma robić pozostawiam waszej inwencji twórczej. W związku z tym co zostało już napisane czy istnieją jakieś instrukcje które w konstruktorach używa się najczęściej? Jeśli tak to proszę o kilka przykładów oprogramowania tychże funkcji popartych odpowiednim kodem i proszę też o nie usuwanie tego postu (wiadomość do Admina). Miłego dnia! #include <iostream> using namespace std;
class A { private: int a; int b; public: A(); A( A & str ); A( const char * zx, double c ); }; A::A() { } A::A( A & str ) { } A::A( const char * zx, double c = 0.0f ) { } int main() { return 0; }
|
|
mateczek |
» 2015-09-17 12:33:52 #include <iostream> using namespace std;
class A { private: int a; int b; public: A(); A( A & str ); A( const char * zx, double c ); }; A::A() : a( 0 ) , b( 0 ) { while( 1 ) { cout << "to ja konstruktor domyślny" << endl; } } A::A( A & str ) { cout << "to ja konstruktor kopiujący" << endl; a = str.a; b = str.b; delete & str; }
A::A( const char * zx, double c = 0.0f ) { cout << "to ja konstruktor z parametrami" << zx << c << endl; delete this; } int main() { int main() { A * b = new A( "tralalalala" ); A c( * b ); A a; return 0; } }
|
|
pekfos |
» 2015-09-17 12:35:56 Dowolne. Konstruktor kopiujący powinien wyglądać tak: A::A( const char * zx, double c = 0.0f ) { cout << "to ja konstruktor z parametrami" << zx << c << endl; delete this; } |
No może jednak nie dowolne. Co to ma być..? Cały twój przykład jest błędny i ma niezdefiniowane zachowanie. proszę też o nie usuwanie tego postu |
Dlaczego? A można chociaż usunąć post usera mateczek? Aż szkoda patrzeć. |
|
mateczek |
Oj tam. Myślałem że autor troszku żartuje. W stylu ogłaszając konkurs na kreatywność :P () » 2015-09-17 13:28:19 Nigdy nie byłem zbyt dobry w konkursach z dowolności :P i tym razem też mi nie wyszło :( Moje konstruktory są właściwie ok. Z mały wyjątkami rzecz jasna. Bo pierwszy się zapętli, drugi skasuje wzorzec :), trzeci skasuje sam siebie:). ale poprawię :). #include <iostream> using namespace std;
class A { private: int a; int b; public: A(); A( A & str ); A( const char * zx, double c ); };
A::A() : a( 0 ) , b( 0 ) { cout << "to ja konstruktor domyślny zeruję obiekt" << endl; } A::A( A & str ) { cout << "to ja konstruktor kopiujący tworze obiekt na wzór przysłanego" << endl; a = str.a; b = str.b; }
A::A( const char * zx, double c = 0.0f ) { cout << "to ja konstruktor z parametrami nie wiem co z nimi zrobić to wyświetlam" << zx << c << endl; } void func( A cosik ) { };
int main() { A * b = new A( "tralalalala" ); A c( * b ); A a; func( a ) return 0; }
|
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2015-09-17 16:12:32 Drogi mateczku to co napisałeś o wolnych żartach to wszystko to prawda:)Wkleiłem kod konstruktorów które podałeś do code blocka i ku memu wielkiemu zdziwieniu program się pięknie skompilował i uruchomił. Jednym słowem wszytko to jest tym o co prosiłem. Dziękuję i gdyby ktoś mógł skrobnąć jeszcze jakiś przykładzik to bardzo o to proszę. Mateczek właśnie analizuję Twój kod... HeY! |
|
« 1 » |