Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Давай коротко поясню, классы это те же структуры только по умолчанию имеет приватную зону. Почему class ну это надо было при переходе с C дабы не было путаницы. В С++ наследование есть как у структур так и у классов.
- Теперь нахрена они нужны, когда пишешь игрушку у тебя допустим будет игрок, но оформить его банальными функциями недостаточно т.к. ты будешь пилить постоянно дублирующиеся функции, поэтому чтобы сделать процесс написания кода удобней были введены структуры (после и классы).
- Представим класс игрока самый примитивный. */
- class Player
- {
- string name;
- int health = 100; //Приватные поля я делаю потому что игрок не будет наследоваться + защита от дураков.
- public:
- void setName(const string &n);
- /*Я передаю константную ссылку по двум причинам.
- 1. const говорит что мы запрещаем изменение передаваемых данных т.е. ридонли.
- 2. ссылка для удобства, она сама разыменуется и будем рады, + мы не будем копировать строку при передаче.*/
- };
- void Player::setName(const string &n)
- {
- name = n; //у классов\структур по дефолту нету set\get методов, мы их должны описать ручками.
- }
- /*Конструктор и деструктор и остальное я опустил для простоты примера.
- Теперь о наследовании.
- Наследование необходимо тогда когда ты хочешь унаследовать часть свойств от родительского класса.*/
- class NPC
- {
- protected:
- string name = "default"; //Даем добро на наследование, и запрещаем изменение напрямую.
- public:
- void setName(const string &n){name = n;}
- string & getName(){return name;}
- };
- class NPC_TROLL : public NPC;
- {
- protected:
- string name = "troll";
- };
- //Этот класс отнаследовал все методы и поля, все что мы сделали это изменили имя на "troll";
- int main()
- {
- NPC npc1;
- NPC_TROLL npc2;
- npc1.getName(); //вернет "default"
- npc2.getName(); //вернет "troll"
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement