2015-05-07 2 views
1

В последнее время я видел немало людей, которые инициализируют их std::string сек, как это:разница между различными способами, чтобы выполнить инициализацию зОго :: струнный

std::string a{ "test" }; // Yes they do it with a single value 

Теперь я бы не использовать это, если это не массив или для передачи списка инициализации.
Но у меня любопытный, есть ли смысл делать это предпочтительно через:

std::string a = "test"; 
std::string a ("test"); 

Все три работы, без сомнения, и я получить разницу между двумя последними.

Дает ли он какое-то улучшение производительности?

Code

+0

Посмотрите стандартную инициализацию C++ 11. [Мягкий вопрос] (http://stackoverflow.com/questions/7612075/how-to-use-c11-uniform-initialization-syntax) – Borgleader

ответ

2

ли дать какие-то улучшения производительности?

No.

В конце концов, один std::string конструктор вызывается. Единственное различие заключается в том, как компилятор идет о выборе конструктора.

Разработчики, вероятно, будут выбирать стиль в соответствии с использованием классов, где это имеет значение, возможно потому, что есть конструкторы списка инициализации или из-за сужения конверсий или конструкторов explicit. И затем используйте один и тот же стиль для строк только ради последовательности.

Для std::string все три пути через компилятор в конечном итоге выбирают один и тот же конструктор.

Смежные вопросы