Должен ли я всегда переходить к аргументам конструктора или установщика `sink`? ⇐ C++
-
Гость
Должен ли я всегда переходить к аргументам конструктора или установщика `sink`?
struct TestConstRef { станд::строка ул; Test(const std::string& mStr): str{mStr} { } }; структура TestMove { станд::строка ул; Test(std::string mStr) : str{std::move(mStr)} { } }; После просмотра GoingNative 2013 я понял, что аргументы sink всегда следует передавать по значению и перемещать с помощью std::move. Является ли TestMove::ctor правильным способом применения этой идиомы? Есть ли случай, когда TestConstRef::ctor лучше/эффективнее?
А как насчет тривиальных сеттеров? Должен ли я использовать следующую идиому или передать const std::string&?
struct TestSetter { станд::строка ул; void setStr(std::string mStr) {str = std::move(str); } };
struct TestConstRef { станд::строка ул; Test(const std::string& mStr): str{mStr} { } }; структура TestMove { станд::строка ул; Test(std::string mStr) : str{std::move(mStr)} { } }; После просмотра GoingNative 2013 я понял, что аргументы sink всегда следует передавать по значению и перемещать с помощью std::move. Является ли TestMove::ctor правильным способом применения этой идиомы? Есть ли случай, когда TestConstRef::ctor лучше/эффективнее?
А как насчет тривиальных сеттеров? Должен ли я использовать следующую идиому или передать const std::string&?
struct TestSetter { станд::строка ул; void setStr(std::string mStr) {str = std::move(str); } };
Мобильная версия