Пожалуйста, не пишите свой собственный класс строки.Существует огромное количество деталей, которые вы должны знать, чтобы не допустить ошибок (например, перегруженные операторы, логические идиомы и т. Д.), И много других деталей, чтобы сделать этот класс строк эффективным (например, реализовать копирование при записи)и т.д. Но только для образовательных целей, вы должны сделать копию пропущенной строки.Вот пример:
#include <cstdint>
#include <cstring>
#include <cstdio>
class String
{
char *p_;
public:
explicit String (const char *str)
{
auto length = std::strlen (str) + 1;
p_ = new char [length];
std::memcpy (p_, str, length);
}
~String ()
{
delete [] p_;
p_ = nullptr;
}
inline const char *c_str () const
{
return p_;
}
};
int
main ()
{
String s ("Hello, world!");
std::printf ("%s\n", s.c_str ());
}