Witam.
Jestem początkujący jeżeli chodzi o programowanie obiektowe a dostałem dosyć "ambitne" (jak na mój poziom zadanie)... Czy mógłby ktoś się wypowiedzieć czy podany fragment kodu jest poprawny oraz jako można go napisać poprawniej (jestem prawie pewny, że coś jest w nim źle). Chodzi mi głównie o operator rzutowania z const char* na char* (ogl nie rozumiem czemu też w tym konstruktorze musi być const chars a nie może być chars <wiem, wiem że wywali błąd ale chodzi mi o to skąd to się wzięło>). Proszę o wszelkie sugestie. :) Co do książek to przeczytałem w miarę rozdziały dotyczące klas jednak po przejściu do praktyki mam trochę problem(może nie czytałem zbyt uważnie :/ ) zatem proszę raczej o konkretną pomoc przy programie a nie odpowiedzi w stylu "doczytaj". Dziękuję za wszystkie sugestie. Edit: Wydaje mi się, że to delete też raczej nie zwalnia tej pamięci dobrze (?)
class String {
char* s_;
public:
/*Konstruktory*/
String(const char* s);
void wyswietlenie()
{
cout<<s_<<endl;
}
/*Destruktor*/
~String();
};
String::String(const char*s)
{
cout<<"Dziala konstruktor char*s"<<endl;
int i;
for(i=0;s[i]!='\0';i++); //może da się jakoś inaczej określić rozmiar? - sizeof()????
i++;
cout<<i<<endl;
s_=new char[i];
s_=(char*)s;
}
String::~String()
{
cout<<"Teraz dziala destruktor"<<endl;
delete[] s_;
}
int main() {
using std::cout; using std::endl; using std::boolalpha;
String s="Tekst sprawdzajacy ";
s.wyswietlenie();
}