Внутри С++ обычно передается по ссылке вместо указателя, если значение не может быть NULL.
Предположим, что у меня есть функция со следующей сигнатурой, которая часто используется со строковым литералом.
void setText( const char* text );
Мне было интересно, как я могу изменить функцию таким образом, чтобы она принимала ссылку (и имеет ли преимущество не принимать NULL)?
-
Если бы я изменил его на
(const char& text)
, тогда это будет ссылка на один char. Из которого адрес может быть принят внутри функции... но чувствует себя не очень хорошо. -
Другим вариантом будет
(const std::string& text)
, который имеет тот недостаток, что он всегда вызывает конструктор и выполняет некоторое динамическое распределение памяти.
Любые другие общие способы или просто придерживайтесь std::string&
или char*
?