gpt4 book ai didi

c++ - 重载运算符返回类型

转载 作者:行者123 更新时间:2023-11-28 06:47:03 25 4
gpt4 key购买 nike

是否可以重载返回字符串而不是类类型的运算符?

string operator++() {
index++;
if (index > num_atts) {
index = 0;
}

string ret = att_names[index];
return ret;

}

最佳答案

该代码没有语法错误。然而,它在语义上存在严重错误。

const char *operator++() {
index++;
if (index > num_atts) {
index = 0;
}

string ret = att_names[index]; // 1
return ret.c_str(); // 2 & 3
} // 4
  1. 创建了ret对象
  2. 您调用 ret.c_str()ret object 为您生成 C 字符串,并返回它。
  3. 现在,您正在尝试返回 C 字符串。
  4. 但是此时ret被销毁了,同时它也销毁了c-string,因为那个c-string的拥有者是ret
  5. 因此,现在您要返回已销毁 指针!!

关于c++ - 重载运算符返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24779225/

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