Напишите (и объясните ответ), что будет выдано в стандартный канал вывода при выполнении вызова функции Q в следующем фрагменте программы:
int i = 0;
class STRING {
char * cp;
public :
STRING (const char * s){
cp = new char [strlen (s) + 1];
strcpy (cp, s);
}
STRING (const STRING& s){
cp = new char [strlen (s.cp) + 1];
strcpy (cp, s.cp);
}
STRING (const STRING& s1,const STRING& s2){
cp = new char [
strlen(s1.cp)+strlen (s2.cp) + 1
];
strcat (strcpy (cp, s1.cp), s2.cp);
}
~STRING () {
i++; delete [] cp;
}
operator char * () { return cp; };
void out () { cout << cp << '\n'; }
};
void f(STRING s) { s.out();}
void q()
{ STRING p ("string1");
STRING s("string2","string3");
f (p); f (s);
}
void Q(){ q(); cout << i; }