【发布时间】:2016-03-08 18:58:53
【问题描述】:
std::string 类允许在 this 运算符的帮助下从不同的类型分配其内部值,例如 'char'、'const char*' 和 'std::string'。需要重载哪个算子才能达到以下效果?
class A {
public:
A(std::string value)
: m_value(value)
{
}
// A a = std::string("some value")
A& operator=(const std::string value) {
m_value = value;
}
// std::string someValue = A("blabla")
???? operator ????
private:
std::string m_value;
};
之后,我们应该可以通过A对象访问std::string的函数了,例如:
A a("foo");
printf("A's value: %s \n", a.c_str());
【问题讨论】:
-
与您的问题无关,但
m_value = value;应该是m_value = std::move(value);,而value应该是非常量。构造函数也是如此 -
@M.M 为什么要在这种情况下使用 std::move()?
-
这样
value持有的资源就可以转移到m_value,而不是复制然后销毁旧资源。