неявные конструкторы для класса String

Строка s2("привет");

Должен ли я писать неявный строковый конструктор

String::String(const char* str);

or

будет ли этот конструктор обрабатывать это:

String::String(const String &str);


person jax    schedule 03.02.2014    source источник
comment
Итак, когда вы попробовали это, что вы узнали?   -  person Kerrek SB    schedule 03.02.2014


Ответы (2)


Когда вы создаете этот строковый объект, будет вызываться конструктор строки (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);

В дальнейшем не пытайтесь редактировать некоторые стандартные библиотеки, это приведет к нежелательным проблемам. если вам нужны какие-либо настраиваемые функции, напишите собственную оболочку.

person Varo    schedule 03.02.2014

std::string уже имеет конструктор для обработки этого. std::string s2("горка") будет работать без проблем.

person Naresh    schedule 03.02.2014