diff --git a/Sections/BadCode.tex b/Sections/BadCode.tex index fbe3e53..e9e17b3 100644 --- a/Sections/BadCode.tex +++ b/Sections/BadCode.tex @@ -711,7 +711,7 @@ \subsection{Явные зависимости} Для того, чтобы подсказать на стороне пользователя, что аргумент может меняться, обычно принято передавать аргумент по указателю. В этом случае картина выглядит так \begin{cppcode} -short function(int, double&, char); +short function(int, double*, char); int x = 1; double y = 2.; @@ -738,7 +738,7 @@ \subsection{Явные зависимости} \end{enumerate} В соответствии с этими соглашениями предыдущий пример выглядел бы так. \begin{cppcode} -short function(int, char, double&); +short function(int, char, double*); int x = 1; double y = 2.; diff --git a/Sections/Classes.tex b/Sections/Classes.tex index 260bc56..7e769c7 100644 --- a/Sections/Classes.tex +++ b/Sections/Classes.tex @@ -1777,7 +1777,7 @@ \subsubsection{Как писать операторы} class A { public: }; -A& operator+(A& left, const A& right) { +A& operator+=(A& left, const A& right) { // do something, requires access to A, should be friend return left; } diff --git a/Sections/Polymorphism/TypeErasure.tex b/Sections/Polymorphism/TypeErasure.tex index 5e6b20e..19663d9 100644 --- a/Sections/Polymorphism/TypeErasure.tex +++ b/Sections/Polymorphism/TypeErasure.tex @@ -22,7 +22,7 @@ \subsection{Стирающие типы} Так как функции существуют во время выполнения программы и они их код менять нельзя при исполнении. То указатель на функцию имеет value semantics и ведет себя как будто переменная, в которую вы складываете функцию с указанной сигнатурой. -\item \verb"std::optional" -- это не совсем полноценный стирающий тип. +\item \verb"std::variant" -- это не совсем полноценный стирающий тип. Он позволяет положить в него любой объект принадлежащий заранее указанному списку типов. И после этого он предоставляет возможность применения операций к объекту, не вынимая его, с помощью visitor паттерна. \end{enumerate}