C++ Ключевое слово friend

Ключевое слово friend Ключевое слово friend предоставляет функции или классу, не являющимся членом данного класса, доступ к закрытым членам этого класса. Т.е. класс начинает считать, что эта функция или иной класс — «часть него», как следствие эта функция или класс имеют доступ ко всем полям и методам исходного класса. Дружественные функции Для создания дружественной функции […]

21. C++ Методы вне класса

Методы вне класса Как можно было увидеть в теме «модификаторы доступа» код может становиться весьма большим, и плохо читаемым, и это притом, что там простейший код и минимум функций, чтоже делать, когда функции будут по несколько десятков/сотен строчек кода? Ведь тогда класс разрастется и анализировать его будет сложно. Для этого существует возможность определения метода вне […]

20. С++ Модификаторы доступа

Модификаторы доступа Ранее мы говорили про классы и упоминали модификаторы доступа, также мы говорили, что можно от класса унаследовать все или отдельные поля и методы, сейчас поговорим об этом подробнее. Модификаторы доступа нужны для ограничения доступа пользователя (стороннего программиста) в ваш класс. Например в предыдущем примере мы могли спокойно обращаться и изменять поля имени и […]

19. C++ Понятие класса

Понятие класса В языке C++ активно используются классы, что они из себя представляют: Как уже было сказано ранее – существует понятие структуры (обособление данных), так вот класс – своего рода продолжение структуры, в котором помимо данных существуют методы(функции для работы с этими данными). Примечание: В языке C++ понятия структуры и класса имеют незначительные различия т.к. […]

17. С/С++ Объединения (Union)

Объединения (union) Одной из наиболее удобных вещей на мой взгляд являются объединения (в языке C они более употребимы) Что это такое: Как известно в памяти лежит какая-то информация, набор Байт, и всевозможные short, long, int это лишь способ представить эти данные, так вот, с помощью union можно «сказать» что в этой области памяти лежит например: […]

16. C/C++ Структуры данных

Структуры данных В языках C и C++ есть способ логически объединить данные, для этого используются Структуры в языке C Структуры и классы в языке C++ Между ними есть различия, и в языке C++ структуры похожи на классы и в них можно добавить методы, также у класса все поля по умолчанию private и наследование по умолчанию […]

18. C++ Рекурсия

Рекурсия С++ позволяет определять рекурсивные функции, т.е. функции которые вызывают сами себя напрямую или опосредованно. Например, следующая функция вычисляет факториал: int factorial(int n) { if (n == 0)  return 1; return factorial(n — 1) * n; } Посмотрим на графике, что в этом случае произойдет: допустим мы хотим посчитать факториал числа 3 factorial(3); Все будет […]

15. C/C++ Многомерный массив в динамической памяти

Многомерный массив в динамической памяти Ранее мы рассмотрели, как создать массив в динамической памяти. Рассмотрим теперь, как создать двумерный массив в динамической памяти: Принципиальная идея показана на рисунке – мы создаем массив указателей на одномерные массивы, которые играют роль строк, и перемещаясь по ним получаем доступ к элементу. В коде это выглядит так (пример на […]

14. C/C++ Работа с динамической памятью

Работа с динамической памятью Работа с динамической памятью различна в языках C и C++, постараемся рассмотреть оба варианта Язык C: Стандартная библиотека cstdlib предоставляет четыре функции для управления памятью: void * malloc ( size_t size);  // выделяет область памяти размера size. Данные не инициализируются. void * calloc ( size_t nmemb , size_t size);  //выделяет массив […]

22. C++ Ключевое слово const в классах и функциях

Ключевое слово const в классах и функциях (С++) Ключевое слово const в начале объявления метода/функции привязывает его к типу возвращаемого значения, т.е. говорит о том, что Вы возвращаете из метода константный объект. const int Func(){//code}; Ключевое слово const в объектах классов Объекты классов можно сделать константными (используя ключевое слово const). Инициализация выполняется через конструкторы классов: […]