Deklaracja metody at(size_type)
Ostatnio zmodyfikowano 2016-11-09 18:28
latajacaryba Temat założony przez niniejszego użytkownika |
Deklaracja metody at(size_type) » 2016-11-09 17:59:24 Witam. Zacznę od tego, że poszukiwałem odpowiedzi na pytanie "jak działa metoda at". Bo w Symfonii deklaracja jest zapisana jako 'referencja_do_znaku at(size_type pozycja)'. Co ma oznaczać ta "referencja_do_znaku"? Autor opisał, że rezultatem funkcji jest referencja do znaku. Dlatego postanowiłem napisać testową klasę i sprawdzić to: class X { public: char * tab; char & funkcja( int p ) { return tab[ p ]; } }; int main() { X c; c.tab = "cstring"; cout << c.funkcja( 5 ); }
No i wszystko pięknie działo do tego momentu. Funkcja zwróciła znak 'n'. Gorzej kiedy zrobiliśmy tak: c.funkcja(5) = 'x'; Błąd krytyczny. Okazało się, że nie można modyfikować poszczególnych znaków w c-stringa. Mam 2 pytania. 1) dlaczego nie można modyfikować znaków? 2) jak w takim razie wygląda i działa ta metoda? |
|
pekfos |
» 2016-11-09 18:15:53 "cstring" to stała. Już samo przypisanie jej do wskaźnika char* jest błędem. Użyj w klasie tablicy, a nie wskaźnika.. char tab[ 100 ];
X() { strcpy( tab, "cstring" ); } |
|
latajacaryba Temat założony przez niniejszego użytkownika |
» 2016-11-09 18:18:29 Ok. A czy typem tej metody jest char&? |
|
pekfos |
» 2016-11-09 18:22:43 |
|
latajacaryba Temat założony przez niniejszego użytkownika |
» 2016-11-09 18:28:04 If the string object is const-qualified, the function returns a const char&. Otherwise, it returns a char&. Alles klar. Wydaje mi sie, że byłem na tej stronie ale nie wiem jak mogłem to przeoczyć. Dzięki za pomoc :D |
|
« 1 » |