aboutsummaryrefslogtreecommitdiff
path: root/week08/Exercise4.h
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2024-04-22 15:43:49 +0300
committerSyndamia <kamen@syndamia.com>2024-04-22 15:43:49 +0300
commitf3406754705e508f57768d3d0d8e457ff5b7620c (patch)
tree9f8743208732c21d5dcb51302feb29058edd8e58 /week08/Exercise4.h
parentf7ed9a8a6c31b17d54d2f37cc0f12b64f8e4b6d2 (diff)
downloadoop-2023-solutions-f3406754705e508f57768d3d0d8e457ff5b7620c.tar
oop-2023-solutions-f3406754705e508f57768d3d0d8e457ff5b7620c.tar.gz
oop-2023-solutions-f3406754705e508f57768d3d0d8e457ff5b7620c.zip
[w8] Added exercise descriptions and solutions to ex 1-7
Diffstat (limited to 'week08/Exercise4.h')
-rw-r--r--week08/Exercise4.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/week08/Exercise4.h b/week08/Exercise4.h
new file mode 100644
index 0000000..588589e
--- /dev/null
+++ b/week08/Exercise4.h
@@ -0,0 +1,37 @@
+#include <iostream>
+
+class FloatArray {
+ float *numbers;
+ int lastUnused;
+ int allocated;
+
+ void free();
+ void copyFrom(const FloatArray& other);
+
+ void resize();
+
+public:
+ FloatArray();
+ ~FloatArray();
+ FloatArray(const FloatArray& other);
+ FloatArray& operator=(const FloatArray& other);
+ FloatArray(FloatArray&& other);
+ FloatArray& operator=(FloatArray&& other);
+
+ void Add(float number);
+
+ // Тези оператори променят аргумента си, затова е по-добре да са член-функции
+ FloatArray& operator+=(const FloatArray& other);
+ FloatArray& operator+=(float number);
+ // По дефиниция не може operator=, operator(), operator[] и operator-> да бъдат имплементирани
+ // като приятелски функции
+ float& operator[](int index);
+
+ // Тези оператори не променят аргументите си, затова е по-добре да са приятелски
+ friend FloatArray operator+(const FloatArray& left, const FloatArray& right);
+ friend FloatArray operator+(const FloatArray& left, float right);
+ friend bool operator==(const FloatArray& left, const FloatArray& right);
+ friend bool operator!=(const FloatArray& left, const FloatArray& right);
+ friend std::ostream& operator<<(std::ostream& ostr, const FloatArray& right);
+ friend std::istream& operator>>(std::istream& ostr, FloatArray& right);
+};