Это, наверное, очень просто, но я застрял и просто не знаю, в чем проблема.
Основной код предопределен как задача. Цель состоит в том, чтобы максимально использовать const. Следующий конструктор просто должен скопировать буквенную строку в const m_data, и это прекрасно работает, но я не могу освободить память - он всегда оставляет 1 блок. Чего мне не хватает?
main.cpp
#include <iostream>
#include "immstring.hpp"
using namespace std;
using namespace Util;
int main()
{
const ImmutableString s1("Hello");
}
immu.hpp
#include <cstring>
namespace Util {
class ImmutableString {
public:
ImmutableString(const char* src);
~ImmutableString();
private:
char* const m_data;
};
}
immu.cpp
#include "immstring.hpp"
#include <iostream>
#include <cstring>
namespace Util
{
ImmutableString::ImmutableString(const char* src)
:m_data{strcpy(new char[strlen(src)+1],src)}{}
ImmutableString::~ImmutableString()
{
delete m_data;
}
}