在自定义字符串类中使用隐式string
转换运算符有什么危险?使用隐式字符串转换运算符的危险?
class MyString
{
public:
...
inline operator string() const { return str; }
private:
std::string str;
};
在自定义字符串类中使用隐式string
转换运算符有什么危险?使用隐式字符串转换运算符的危险?
class MyString
{
public:
...
inline operator string() const { return str; }
private:
std::string str;
};
隐式转换的主要“危险”主要是:您可能会得到意外的转换。
如果你的字符串类在逻辑上可以用作std :: string,我不认为有问题。
如果它在逻辑上用作std :: string会发生什么意外的转换? –
那就是说:如果类可以逻辑地用作std :: string,那么应该没有问题 – RedAgito
你想做什么?看起来你在这里所做的只是招致额外的开销,因为你只是返回相同的字符串。 –
你应该弄清楚你是否真的想要转换来创建一个字符串的副本。 – juanchopanza
MyString本质上是std :: string的一个包装,但是它删除了char *操作符来保护它免受非空终止的char数组的影响。我希望能够将std :: string更改为MyString,并在保持向后兼容性的同时获得该保护。这意味着对std :: string的赋值需要工作。 –