Obiektowe - problem z dziwnymi znaczkami
Ostatnio zmodyfikowano 2011-06-23 21:24
kamilo Temat założony przez niniejszego użytkownika |
Obiektowe - problem z dziwnymi znaczkami » 2011-06-17 10:31:12 Witam,
Mam problem z programem w C++.
Mianowicie, program wyświetla jakies dziwne znaczki i wartości dla zmiennych kolor i wzrost, dlaczego tak się dzieje i jak się z tym uporać ?
Wklejam kod:
#include <iostream> #include <string> #include <cstdlib>
using namespace std;
class Smok { private: int wielkosc; char * kolor; public: Smok( char * kolor, int wielkosc ); void wiezi_ksiezniczke(); };
Smok::Smok( char * kolor, int wielkosc ) { kolor = "zielony"; wielkosc = 260; }
int main() { Smok ob1( "czarny", 150 ); ob1.wiezi_ksiezniczke(); system( "PAUSE" ); } void Smok::wiezi_ksiezniczke() { cout << "Straszny " << kolor << " smok " << wielkosc << " wiezi ksiezniczke !\n"; } |
|
kamillo121 |
» 2011-06-17 11:43:04 Smok::Smok( char * kolor, int wielkosc ) { kolor = "zielony"; wielkosc = 260; }
Jak już chcesz tak to zamień to na: Smok::Smok( char * kolor_n, int wielkosc_n ) { kolor = "zielony"; wielkosc = 260; }
Tylko jaki jest sens podawania argumentów do konstruktora skoro w konstruktorze i tak przypisujesz inne wartości do pól "kolor" i "wielkosc" ? |
|
kamilo Temat założony przez niniejszego użytkownika |
» 2011-06-17 11:55:50 Dzięki kolego! To w takim razie jak zadeklarować wartości domyślne tych zmiennych? |
|
kamillo121 |
» 2011-06-17 12:40:38 Wartości domyślne możesz ustawić np w konstruktorze bez parametrów, który zostanie wywołany przy tworzeniu nowego obiektu: class Smok { private: int wielkosc; char * kolor; public: Smok(); void wiezi_ksiezniczke(); };
Smok::Smok() { kolor = "wartosc_domyslna"; wielkosc = wartosc_domyslna; }
|
|
kamilo Temat założony przez niniejszego użytkownika |
» 2011-06-17 12:50:19 Ok, ale wtedy nie mogę tworzyć nowych obiektów z innymi wartosciami zmiennych? |
|
kamillo121 |
» 2011-06-17 12:55:03 No dobra ale od czego jest przeciążanie ? class Smok { private: int wielkosc; char * kolor; public: Smok(); Smok( char *, int ); void wiezi_ksiezniczke(); };
Smok::Smok() { kolor = "wartosc_domyslna"; wielkosc = wartosc_domyslna; }
Smok::Smok( char * pk, int pw ) { }
|
|
kamilo Temat założony przez niniejszego użytkownika |
» 2011-06-17 12:55:22 Juz doszedłem jak to rozwiązać, tworzę obiekty bez parametrów, a funkcje wywołuję z konkretnymi danymi. Jest to poprawne ? |
|
kamillo121 |
» 2011-06-17 12:56:57 Jeżeli jest takie twoje założenie to tak, ale przeczytaj to co napisałem wyżej (a tak na boku to klasa ma metody albo funkcje składowe nie funkcje). |
|
« 1 » 2 |