Cześć,
w jednym z podręczników do programowania konstruktor domyślny pewniej klasy zdefiniowany jest następująco :
String::String()
{
len = 4; //len sluzy do okreslania dlugosci ciagu
str = new char[1];
str[0] = '\0';
}
Dla tej samej klasy zdefiniowane jest przeciążenie operatora wczytywania >>
istream & operator >>(istream & is, String & st)
{
char temp[String::CINLIM]; //CINLIMIN = 80
is.get(temp,String::CINLIM);
if(is);
st = temp;
while (is && is.get() !='\n')
continue;
return is;
}
Jeżeli stworzymy obiekt, do którego inicjazliacji wykorzystano konstruktor domyślny i potem spróbujemy wczytać dane do tego obiektu za pomocą przeciążonego operatora wszystko będzie działać poprawnie. Dlaczego tak jest, przecież zaalokowaliśmy w pamięci jednoelementową tablice char, a wczytujemy załóżmy 20 znaków. Mimo tego program działa prawidłowo.
Pozdrawiam