Advertisement
AI_UBI

C++ short string guide

Feb 9th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. каждый класс должен содержать только необходимый минимум методов для работы со своими полями.
  2. вот например если класс строка то методы должны быть следующие.
  3. конструкторы:
  4. IMyString(const char *str){}
  5. IMyString(const std::string *str){}
  6. IMyString(const IMyString &str){} //Создается обычно автоматически, но если тебе нужны фичи то определяешь по своему.
  7.  
  8. Операторы копирования:
  9. IMyString & operator=(const std::string &str){}
  10. IMyString & operator=(const char *str){}
  11. IMyString & operator=(const IMyString &str){} //Это тоже автоматом пилится. Необходим для конструкций типа IMyString A("wtf"), B("yoba");
  12. B = A; //B == "wtf"
  13.  
  14. Операторы сложения:
  15.  
  16. IMyString & operator+(const IMyString &str){}
  17. IMyString & operator+(const std::string &str){}
  18. IMyString & operator+(const char *str){}
  19.  
  20. Методы для работы со строкой:
  21. unsigned size()
  22. {
  23.       return length-1; //чаще всего для компактности хранится начало и конец массива и отдается вычетание.
  24. }
  25.  
  26. IMyString & append(const IMyString &str)
  27. {
  28.      return self_string+str;
  29. }
  30.  
  31.  
  32. class IMyString
  33. {
  34.     char *self_string;
  35.     unsigned length = 0;
  36.  
  37.     void init(const char *str)
  38.     {
  39.         length = strlen(str);
  40.         self_string = new char[length];
  41.         *self_string = *str;
  42.     }
  43.  
  44.     public:
  45.    
  46.     IMyString(const char *str)
  47.     {
  48.         init(str);
  49.     }
  50.     IMyString(const std::string *str)
  51.     {
  52.         init(str.c_str());
  53.     }
  54.     IMyString(const IMyString &str)
  55.     {
  56.         init(str.self_string); //Тут (еще не уверен вроде бы работает), поля другого класса нашего типа являются дружественными, и мы можем получить к ним доступ.  
  57.     }
  58. }
  59. ну и тд
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement