Я считаю, что класс MFC / ATL CString
очень удобен в коде Win32 C ++; в частности, мне показалось удобным тот факт, что мы можем передавать экземпляры CString
в параметры LPCWSTR
(т.е. const wchar_t *
) Win32 API напрямую, благодаря оператору неявного преобразования, определенному CString
.
Вместо этого при использовании std::wstring
требуется явный вызов метода .c_str()
.
Итак, почему строковые классы STL (как std::string
, так и std::wstring
) требуют явного вызова метода (c_str()
) вместо определения неявного оператора преобразования _11 _ / _ 12_?
Есть ли серьезные подводные камни, скрытые с помощью операторов неявного преобразования?