codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
//ex9_2.cpp //наследование класса String #include <iostream> #include <string> using namespace std; class String //базовый класс { protected: enum {SZ = 80 }; //размер всех объектов String char str [SZ]; //содержит С-строку public: String() //конструктор без аргументов {str [0] ='\0';} String(char* s) //конструктор c одинм аргументом {strcpy(str,s);} //преобразование в String void display()const //вывести String {cout << str;} operator char*() //функция преобразования {return str;} //преобразовать String в C-string }; class Pstring :public String //порожденный класс { public: Pstring(char* s); }; Pstring::Pstring(char* s) //конструктор для Pstring { if(strlen(s)>SZ-1) //если слишком длинная строка. { int j = 0; for(j = 0 ;j<SZ-1;j++) //копировать первые SZ-1 str [j] = s [j]; //символы «вручную» str [j] = '\0'; //добавить служебный символ } else //если не слишком длинная. { String(s); //создать нормальную строку } } int main() { char* str = new char[255]; cout << "Введите строку: "; cin.getline(str,255); Pstring s1(str); //Pstring s1 ="Это очень-очень длинная строка, которая, возможно,да, нет. точно, - превысит размер, ограниченный SZ."; cout <<"\nsl="; cout << static_cast<char*>(s1) << endl; cout << "Введите строку: "; cin.getline(str,255); Pstring s2 = str; //Pstring s2 ="А это коротенькая строка."; cout <<"\ns2="; s2.display();// пробывал так cout << static_cast<char*>(s2); //,но картина не изменилась cout << endl; getchar(); return 0; }
Private
[
?
]
Run code
Submit