【发布时间】:2020-10-12 14:55:41
【问题描述】:
一些(很多?)程序员被介绍给std::string_view 和std::string 会问自己:“为什么我可以将后者转换为前者,而反过来却不行?”
这里回答了一部分问题:
Why is there no implicit conversion from std::string_view to std::string?
人们可以喜欢或不喜欢这些原因。但是 - explicit 构造函数呢?我在 cppreference.com 上的 std::string constructors page 上没有看到一个?
关于隐式构造函数的问题的两个答案基本上都表明隐式构造函数会导致内存分配和内存复制,而程序员并不清楚这一点。好的,好吧,使用显式构造函数 - 程序员确实想要分配和复制。为什么不给他/她呢?
【问题讨论】:
-
这里是一个来自 std::string_view 的 std::string 的显式构造函数。
-
确切地说,任何可转换为 string_view 的东西都有一个明确的 c'tor。
-
Per jonrsharpe,这能回答你的问题吗? How to correctly create std::string from a std::string_view?
-
@DavisHerring:虽然答案几乎相同,但问题却大不相同。所以,我认为这些不应该是骗子
标签: c++ c++17 string-view explicit-conversion explicit-constructor