我在C++中有一个类,我希望能够打印一个对象,所以我创建了一个char *转换运算符。事情是,由于某种原因,运算符函数的输出是随机符号而不是我返回的字符串。 下面的代码:用char *运算符随机输出
operator const char*()const {
std::cout << (std::to_string(Nom) + '/' + std::to_string(Denom)).c_str() << std::endl;
return (std::to_string(Nom) + '/' + std::to_string(Denom)).c_str();
}
和主要功能:
Rational r1(7, 15);
std::cout << r1<<std::endl;
return 0;
第一行输出normaly( “7/15”),但返回值就是随机的字母。
任何线索?
你认为c_str()有什么作用? – UKMonkey
您可以在临时对象上调用'c_str()'。在您的操作员返回之前,结果是一个悬挂指针,甚至在之前。 – StoryTeller
'std :: string'具有'c_str()'而不是'operator char *()'的原因是为了让它更明显,像这样的代码正在做一些严重错误的事情。 –