gpt4 book ai didi

c++ - 使用 char* 运算符的随机输出

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:24 25 4
gpt4 key购买 nike

我有一个 C++ 类,我希望能够打印一个对象,所以我创建了一个 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"),但返回值只是随机字母。

有什么线索吗?

最佳答案

(std::to_string(Nom) + '/' + std::to_string(Denom)) 创建一个临时变量。 .c_str() 获取该变量拥有的一些内存的地址。

不久之后,该变量被销毁(您不会将其复制/移动到任何地方)。内存被释放。

你从 c_str() 获得的地址虽然被保留了,但现在它指向一些内存,现在可能是也可能不是你的应用程序的一部分。试图阅读这是未定义的行为(或简称为 UB)。

关于c++ - 使用 char* 运算符的随机输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40133319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com