我在 HackerRank 上随意做一些挑战,偶然发现了“继承代码”,我试图用这个来解决:
class BadLengthException : public exception {
private:
const char* message;
public:
BadLengthException(int n_) {
this->message = to_string(n_).c_str();
}
const char * what() const throw() {
return this->message;
}
};
由于它不起作用(输出为空),我已经搜索了原因,并且我发现了这个关于同一问题的问题。我想我确实理解所提出的解决方案,但我仍然对我的尝试感到非常困惑:
我知道该字符串to_string(n_).c_str()
可以被视为局部变量,就像上述问题中的示例一样,但为什么在what()
调用时它仍然被视为局部变量?难道它不应该通过初始化保留下来message
,从而在调用时可用吗what()
?