Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Obiektowe - problem z dziwnymi znaczkami

Ostatnio zmodyfikowano 2011-06-23 21:24
Autor Wiadomość
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:


C/C++
#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";
}
P-34206
kamillo121
» 2011-06-17 11:43:04
C/C++
Smok::Smok( char * kolor, int wielkosc )
{
    kolor = "zielony";
    wielkosc = 260;
}

Jak już chcesz tak to zamień to na:


C/C++
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"  ?
P-34207
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?
P-34208
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:

C/C++
class Smok
{
private:
    int wielkosc;
    char * kolor;
public:
    Smok();
    void wiezi_ksiezniczke();
   
};


Smok::Smok()
{
    kolor = "wartosc_domyslna";
    wielkosc = wartosc_domyslna;
}
P-34209
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?
P-34211
kamillo121
» 2011-06-17 12:55:03
No dobra ale od czego jest przeciążanie ?

C/C++
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 )
{
    //przypisanie wartości
}
P-34213
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 ?
P-34214
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).
P-34215
« 1 » 2
  Strona 1 z 2 Następna strona