Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. // ConsoleApplication14.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #include "pch.h"
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. /*
  10. MyClass func(int, int) {
  11. return MyClass(x+y); тут копируется объект и это проблема для большим элементов. для решения этой проблемы требуются перемещающие конструкторы и операторы.
  12. 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
  13. }
  14. */
  15.  
  16. /*
  17. && это placeholder (ссылка тоже). lvalue = rvalue перемещение.
  18. */
  19.  
  20. /*
  21. MyClass::MyClass(MyClass &&)
  22. MyClass::operator=(MyClass &&)
  23. r = x + y + z; где x, y, z - большие объекты
  24.  
  25. компиляция: r.operator = (x.operator + (y.operator + (z))); то есть у нас всё время есть сумма объектов (временная), а объекты не запоминаются сами, после перевысчита суммы объект временный удаляется и создаётся новый,
  26. таким образом, это всё экономит память.
  27. */
  28.  
  29. /* коэф 0.2 посещение + 0.2 семинары/кр/всякое говно + 0.6 лабы = накоп */
  30.  
  31. /* есть класс (если как пользователь) пытаюсь создать класс, то он не создаётся второй, т.е. класс существует только в единственном экзамепляре называется singleton */
  32. /* ПРОЩЕ ГОВОРЯ НЕСКОЛЬКО КЛАССОВ В ЕД. ЭКЗАМЕМПЛЯРАХ, АНАЛОГ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ */
  33. /* доступ к классу можем получить через статический метод класса (classic короче) */
  34. /* 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 */
  35. /* также они могут друг от друга зависить */
  36.  
  37. /* ПРИМЕР */
  38. /* singleton/h */
  39. class Singleton {
  40. public:
  41. //в этом паттерне можно использовать разные указатели (умные и тд)
  42. static Singleton* Instance(); //возвращается копию указателя, меняться эти данные не будут меняться (т.е. изменять указатель НЕЗЯ)
  43. protected:
  44. Singleton() {}; //запретить копии этого класса НАДА, если у наследника конструктор не будет заблокирован, то мы сможем создать копии, т.е. желательно писать в private
  45. Singleton(const Singleton&) = delete; // = delete удаляет конструткор, в старых С++ требуется скрывать конструктор, так как такая реализация не возможна. это является запретом копирования класса
  46. private:
  47. static Singleton *instance_;
  48. };
  49.  
  50. /* подрубаем этот .h */
  51. /* singleton.cpp */
  52. static Singleton *Singleton::instance_ = nullptr;
  53. Singleton* Singleton::Instance() { //метод
  54. if (instance_ == nullptr) {
  55. instance_ = new Singleton(); //проверка
  56. }
  57. return instance_;
  58. }
  59. /* если заканчивается вместе с программой действие этого класса, то диструктор не требуется */
  60.  
  61. /* маня.срр */
  62.  
  63. int main() {
  64. auto s = Singleton::Instance();
  65. }
  66.  
  67. /* abstract factory, игра с лабиринтом */
  68. /* есть метод game.CreateMaze(factory), в этом методе алгоритм генерации лабиринта, т.е. наследники могут создавать другие комнаты, двери и тд. */
  69. /* Mazefactory.h */
  70.  
  71. const virtual ... //константа только на выходе
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement