Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication14.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #include "pch.h"
- #include <iostream>
- using namespace std;
- /*
- MyClass func(int, int) {
- return MyClass(x+y); тут копируется объект и это проблема для большим элементов. для решения этой проблемы требуются перемещающие конструкторы и операторы.
- https://ru.stackoverflow.com/questions/490753/%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D1%8F
- }
- */
- /*
- && это placeholder (ссылка тоже). lvalue = rvalue перемещение.
- */
- /*
- MyClass::MyClass(MyClass &&)
- MyClass::operator=(MyClass &&)
- r = x + y + z; где x, y, z - большие объекты
- компиляция: r.operator = (x.operator + (y.operator + (z))); то есть у нас всё время есть сумма объектов (временная), а объекты не запоминаются сами, после перевысчита суммы объект временный удаляется и создаётся новый,
- таким образом, это всё экономит память.
- */
- /* коэф 0.2 посещение + 0.2 семинары/кр/всякое говно + 0.6 лабы = накоп */
- /* есть класс (если как пользователь) пытаюсь создать класс, то он не создаётся второй, т.е. класс существует только в единственном экзамепляре называется singleton */
- /* ПРОЩЕ ГОВОРЯ НЕСКОЛЬКО КЛАССОВ В ЕД. ЭКЗАМЕМПЛЯРАХ, АНАЛОГ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ */
- /* доступ к классу можем получить через статический метод класса (classic короче) */
- /* https://ru.stackoverflow.com/questions/327136/singleton-%D0%B8-%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F */
- /* также они могут друг от друга зависить */
- /* ПРИМЕР */
- /* singleton/h */
- class Singleton {
- public:
- //в этом паттерне можно использовать разные указатели (умные и тд)
- static Singleton* Instance(); //возвращается копию указателя, меняться эти данные не будут меняться (т.е. изменять указатель НЕЗЯ)
- protected:
- Singleton() {}; //запретить копии этого класса НАДА, если у наследника конструктор не будет заблокирован, то мы сможем создать копии, т.е. желательно писать в private
- Singleton(const Singleton&) = delete; // = delete удаляет конструткор, в старых С++ требуется скрывать конструктор, так как такая реализация не возможна. это является запретом копирования класса
- private:
- static Singleton *instance_;
- };
- /* подрубаем этот .h */
- /* singleton.cpp */
- static Singleton *Singleton::instance_ = nullptr;
- Singleton* Singleton::Instance() { //метод
- if (instance_ == nullptr) {
- instance_ = new Singleton(); //проверка
- }
- return instance_;
- }
- /* если заканчивается вместе с программой действие этого класса, то диструктор не требуется */
- /* маня.срр */
- int main() {
- auto s = Singleton::Instance();
- }
- /* abstract factory, игра с лабиринтом */
- /* есть метод game.CreateMaze(factory), в этом методе алгоритм генерации лабиринта, т.е. наследники могут создавать другие комнаты, двери и тд. */
- /* Mazefactory.h */
- const virtual ... //константа только на выходе
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement