String
{
protected:
enum { SZ = 80 };
char str[SZ];
public:
String()
{ str[0] = '\0'; }
String( char s[] )
{ strcpy( str, s ); }
void display() const
{ cout << str; }
operator char* ()
{ return str; }
};
//////////////////////////////////
class Pstring : public String
{
public:
Pstring( char s[] );
};
//------------------
Pstring::Pstring( char s[] )
{
if(strlen(s) > SZ - 1)
{
int j = 0;
for(j; j < SZ - 1; j++)
{
str[j] = s[j];
}
str[j] = '\0';
}
else
String( s );
}
//------------
int main()
{
Pstring obj1("some string here...");
obj1.display();
return 0;
}
почему в конструкторе Pstring::Pstring( char s[] ) после else создается временный объект, который нельзя использовать? И вообще строку не выводит(((
Создаётся временный объект, потому что ты его создаёшь, вызвав конструктор
Обсуждают сегодня