Наиболее эффективный способ передачи временного строкового литерала в C++17?

Я пытался искать в другом месте, но не мог найти полный ответ.

Допустим, у меня есть функция или конструктор класса, который создает окно, функция, скорее всего, будет вызываться со строковым литералом:auto myWindow = CreateWindow("Window Title");

Мне было интересно, что было бы лучшим способом написать объявление функции / конструктора, так как кажется, что есть много опций, таких как const string ref, string_view или строковый литерал в стиле C. Я также задавался вопросом, может ли строка rvalue быть лучше, чем ссылка, поскольку она может быть перемещена и, следовательно, построена в стеке функций. Я хотел бы, чтобы функция CreateWindow была интерфейсом или оболочкой для API, такого как Qt, SDL или напрямую с ОС, поэтому строковый литерал, скорее всего, будет передан другой функции, так что он может быть преобразован в соответствующий тип для этой функции., Этот вопрос в основном является для меня познавательным, поскольку он мало влияет на этот пример. Мне просто интересно, может ли кто-нибудь дать общее представление о передаче строкового литерала в современном C++ со всеми опциями, которые меня немного смущают!

Я надеюсь, что я следую правилам переполнения стека должным образом, если не простите, пожалуйста, это мой первый раз, лол!

class Window
{
public:
    Window(const int Width, const int Height, STRING_LITERAL Title);
    virtual ~Window();
    Window(const Window& copy) = delete;
    Window& operator=(const Window& assign) = delete;
};

0 ответов

Другие вопросы по тегам