codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#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() { setlocale(0,""); Pstring s1 ="Это очень-очень длинная строка, которая, возможно,да, нет. точно, - превысит размер, ограниченный SZ."; cout <<"\nsl="; cout << static_cast<char*>(s1) << endl; Pstring s2 ="А это коротенькая строка."; cout <<"\ns2="; s2.display();// пробывал так cout << static_cast<char*>(s2); //,но картина не изменилась cout << endl; getchar(); return 0; }
Private
[
?
]
Run code
Submit