Статическая функция QString fromStdString вместо конструктора

0

В чем причина выбора API ниже:

QString QString::fromStdString(const std::string & str) [static]

Почему существует необходимость вызова статической функции, когда у нас может быть конструктор следующим образом:

QString::QString(const std::string & str)

Аналогичные конструкторы для представления строки c (char *), std :: string являются исключением. В чем причина этого?

  • 3
    Я бы на самом деле избегал QString (const char *) и использовал бы вместо этого QLatin1String / QStringLiteral или QString :: fromLatin1 / QString :: FromUtf8 и т. Д. Для сознательного и явного указания кодировки, используемой для преобразования.
  • 0
    Отметил! Эти вызовы также происходят по pattern статической функции ...
Показать ещё 2 комментария
Теги:
qt
design

1 ответ

2

Qt предшествует explicit конструкторам, и он не может сломать своих существующих клиентов безвозмездно. Еще одна причина заключалась в том, что std::string и QString необязательно находятся в одной кодировке/кодовой странице, а статические методы явно указывают на то, что происходит более дорогое преобразование.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню