// rys. 8.5: // program testujacy klase napis #include #include "napis.h" int main() { napis s1( "wesolych" ), s2( "swiat" ),s3; // sprawdzenie dzialania operatorow przeciazonych cout << "s1 to \"" << s1 << "\": s2 to \"" << s2 << "\"; s3 to \"" << s3 << '\"' <<"\nwyniki porownan s1 i s2:" << "\ns2 == s1 daje " << (s2 == s1 ? "true" : "false" ) << "\ns2 != s1 daje " << (s2 != s1 ? "true" : "false" ) << "\ns2 > s1 daje " << (s2 > s1 ? "true" : "false" ) << "\ns2 < s1 daje " << (s2 < s1 ? "true" : "false " ) << "\ns2 >= s1 daje " << (s2 >= s1 ? "true" : "false" ) << "\ns2 <= s1 daje " << (s2 <= s1 ? "true" : "false" ); // test przeciazonego operatora ! cout << "\n\nSprwdzenie !s3:\n"; if ( !s3 ) { cout << "s3 jest pusty; przypisanie s3 zawartosci s1; \n"; s3 = s1; cout << "s3 to \"" << s3 << "\""; } // test przeciazonego operatora konkatencji cout << "\n\ns1 += s2 daje s1 = "; s1 += s2; cout << s1; // test konstruktora przeksztalcajacego cout << "\n\ns1 += Wielkanocnych daje\n"; s1 += " Wielkanocnych"; cout << "s1 = " << s1 << "\n\n"; // test przeciazonego operator () cout << "Podnapis s1 rozpoczynajacy sie od\n" << "pozycji 0 o dlugosci 14 znakow, s1( 0, 14), to: " << s1( 0, 14 ) << "\n\n"; // pobranie podnapisu az do konca napisu oryginalnego cout << "Podnapis s1 rozpoczynajacy sie od od\n" << "pozycji 15, s1( 15, 0 ), to: " << s1( 15, 0 ) << "\n\n"; // 0 - do konca napisu // test konstruktora kopiujacego napis *s4Ptr = new napis( s1); cout << "*s4Ptr = " << *s4Ptr << "\n\n"; // test przypisania samemu sobie cout << "przypisanie *s4Ptr do *s4Ptr\n"; *s4Ptr = *s4Ptr; // test operatora przypisania cout << "*s4Ptr = " << *s4Ptr << '\n'; // test destruktora delete s4Ptr; // test wykorzystania operatora indeksu do otrzymania lvalue s1[ 0 ] ='W'; s1[ 9 ] ='s'; cout << "s1 po s1[0] ='W' oraz s1[9] = 'S' to: " << s1 << "\n\n"; // proba wykorzystania indeksu o zbyt duzej wartosci cout << "Proba przypisania 'd' do s1[40] daje: " << endl; s1[ 30] = 'd'; // blad: indeks poza zakresem return 0; }