Строка s2 («привет»);
Должен ли я написать неявный строковый конструктор
String :: String (const char * str);
или же
этот конструктор справится с этим:
String :: String (const String &ул);
Когда вы создаете этот строковый объект, будет вызван конструктор string (const char * s), поэтому нет необходимости писать конструктор.
Вот конструкторы, которые определены внутри класса std :: string
string();
string (const string& str);
string (const string& str, size_t pos, size_t len = npos);
string (const char* s);
string (const char* s, size_t n);
string (size_t n, char c);
template <class InputIterator>
string (InputIterator first, InputIterator last);
Далее не пытайтесь редактировать некоторые стандартные библиотеки, это приведет к нежелательным проблемам. если вы хотите какие-либо настраиваемые функции, напишите свою собственную оболочку.
У std :: string уже есть конструктор для обработки этого. std :: string s2 («hill») будет работать без проблем.