From 5bb38713ed455d754841c84a39fb65f33f18462e Mon Sep 17 00:00:00 2001 From: Sebastien Ponce Date: Wed, 12 Mar 2025 15:51:59 +0100 Subject: [PATCH] Adding a slide on chaining operators --- talk/objectorientation/operators.tex | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/talk/objectorientation/operators.tex b/talk/objectorientation/operators.tex index c1d7a00b..0ea892b8 100644 --- a/talk/objectorientation/operators.tex +++ b/talk/objectorientation/operators.tex @@ -94,6 +94,28 @@ \end{block} \end{frame} +\begin{frame}[fragile] + \frametitlecpp[98]{Chaining operators} + \begin{block}{In general, return a reference to the left value} + \begin{cppcode} + struct Complex { + float m_real, m_imaginary; + Complex& operator=( const Complex& other ) { + m_real = other.m_real; + m_imaginary = other.m_imaginary; + return *this; + } + }; + Complex c1{2.f, 3.f}; + Complex c2, c3; + // right to left associativity + c3 = c2 = c1; + // left to right associativity + std::cout << c1 << c2 << c3 << std::endl; + \end{cppcode} + \end{block} +\end{frame} + \begin{frame}[fragile] \frametitlecpp[98]{Friend declarations} \begin{block}{Concept}