Advertisement
AI_UBI

inheritance

Dec 29th, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. /* Давай коротко поясню, классы это те же структуры только по умолчанию имеет приватную зону. Почему class ну это надо было при переходе с C дабы не было путаницы. В С++ наследование есть как у структур так и у классов.
  2. Теперь нахрена они нужны, когда пишешь игрушку у тебя допустим будет игрок, но оформить его банальными функциями недостаточно т.к. ты будешь пилить постоянно дублирующиеся функции, поэтому чтобы сделать процесс написания кода удобней были введены структуры (после и классы).
  3. Представим класс игрока самый примитивный. */
  4. class Player
  5. {
  6.      string name;
  7.      int health = 100; //Приватные поля я делаю потому что игрок не будет наследоваться + защита от дураков.
  8. public:
  9.      
  10.     void setName(const string &n);
  11. /*Я передаю константную ссылку по двум причинам.
  12. 1. const говорит что мы запрещаем изменение передаваемых данных т.е. ридонли.
  13. 2. ссылка для удобства, она сама разыменуется и будем рады, + мы не будем копировать строку при передаче.*/
  14. };
  15.  
  16. void Player::setName(const string &n)
  17. {
  18.     name = n; //у классов\структур по дефолту нету set\get методов, мы их должны описать ручками.
  19. }
  20.  
  21. /*Конструктор и деструктор и остальное я опустил для простоты примера.
  22.  
  23. Теперь о наследовании.
  24. Наследование необходимо тогда когда ты хочешь унаследовать часть свойств от родительского класса.*/
  25. class NPC
  26. {
  27. protected:
  28.     string name = "default"; //Даем добро на наследование, и запрещаем изменение напрямую.
  29. public:
  30.     void setName(const string &n){name = n;}
  31.     string & getName(){return name;}
  32. };
  33. class NPC_TROLL : public NPC;
  34. {
  35. protected:
  36.     string name = "troll";
  37. };
  38. //Этот класс отнаследовал все методы и поля, все что мы сделали это изменили имя на "troll";
  39. int main()
  40. {
  41.     NPC npc1;
  42.     NPC_TROLL npc2;
  43.     npc1.getName(); //вернет "default"
  44.     npc2.getName(); //вернет "troll"
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement