让我们考虑以下代码:
std::string&& rvalue_reference_1 = std::string("some string");
std::string regular_string("some string");
std::string&& rvalue_reference_2 = "some string";
第一个和第二个语句的行为方式是否相同?我理解第一个是构建一个临时对象,然后简单地指定一个名字"它。因此它成为常规对象。我错了吗?
在第三个声明中,我不确定会理解幕后发生的事情。 "一些字符串"是匿名/临时const char*
,rvalue_reference_2是对std::string
对象的右值引用,而不是对const char*
的右值引用...通过编写std::string&&
,我们是否隐式致电std::string
的构造函数?