From 61d91878b922bbd3cb526cc0677a9e6577dedb94 Mon Sep 17 00:00:00 2001 From: studiosi Date: Sat, 15 Aug 2026 20:56:31 +0300 Subject: [PATCH] Solved: 20 - Constructors --- modules/06_oop_basics/include/constructors.hpp | 2 +- modules/06_oop_basics/src/constructors.cpp | 13 ++++++------- modules/06_oop_basics/test/constructors_test.cpp | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/modules/06_oop_basics/include/constructors.hpp b/modules/06_oop_basics/include/constructors.hpp index c6c595e..a2329a3 100644 --- a/modules/06_oop_basics/include/constructors.hpp +++ b/modules/06_oop_basics/include/constructors.hpp @@ -8,7 +8,7 @@ namespace oop { class StringBuilder { public: StringBuilder() = default; - explicit StringBuilder(std::string initial); + explicit StringBuilder(const std::string &initial); StringBuilder(const StringBuilder& other); auto operator=(const StringBuilder& other) -> StringBuilder&; ~StringBuilder() = default; diff --git a/modules/06_oop_basics/src/constructors.cpp b/modules/06_oop_basics/src/constructors.cpp index 71e77dd..66c67f3 100644 --- a/modules/06_oop_basics/src/constructors.cpp +++ b/modules/06_oop_basics/src/constructors.cpp @@ -2,12 +2,12 @@ namespace oop { -StringBuilder::StringBuilder(std::string initial) { - // TODO: Initialize buffer_ from initial - (void)initial; -} -StringBuilder::StringBuilder(const StringBuilder& other) : buffer_(other.buffer_) {} +StringBuilder::StringBuilder(const std::string &initial) + : buffer_(initial.begin(), initial.end()) {} + +StringBuilder::StringBuilder(const StringBuilder& other) + : buffer_(other.buffer_) {} auto StringBuilder::operator=(const StringBuilder& other) -> StringBuilder& { if (this != &other) { @@ -17,8 +17,7 @@ auto StringBuilder::operator=(const StringBuilder& other) -> StringBuilder& { } void StringBuilder::append(const std::string& text) { - // TODO: Append all characters from text - (void)text; + std::ranges::copy(text, std::back_inserter(this->buffer_)); } auto StringBuilder::str() const -> std::string { diff --git a/modules/06_oop_basics/test/constructors_test.cpp b/modules/06_oop_basics/test/constructors_test.cpp index ea9e032..b646793 100644 --- a/modules/06_oop_basics/test/constructors_test.cpp +++ b/modules/06_oop_basics/test/constructors_test.cpp @@ -8,7 +8,7 @@ TEST(Constructors, InitialAndAppend) { } TEST(Constructors, CopySemantics) { - oop::StringBuilder original("C++"); + const oop::StringBuilder original("C++"); oop::StringBuilder copy = original; copy.append("11"); EXPECT_EQ(original.str(), "C++");