【发布时间】:2020-05-21 16:33:59
【问题描述】:
我得到了一个 smartReverse 类,它包含一个成员数据,它是一个名为 str 的字符串。我必须实现一个成员方法(没有任何类型的辅助函数,它不带参数并返回 str 的反转版本。
到目前为止,这是我的尝试,但这只是将第一个字符发送到字符串的末尾。从这一点来看,我很无知。我知道如何使用辅助函数来执行此操作,但不允许在此处使用它们。
string smartReverse::rev_recursive() const
{
if (str.length() <= 1)
return str;
char first_char = str[0];
smartReverse* remainder = new smartReverse(str.substr(1));
remainder->rev_recursive();
return remainder->getString() + first_char;
}
【问题讨论】:
-
smartReverse* remainder = new smartReverse(str.substr(1));确实存在内存泄漏,它应该只是smartReverse remainder(str.substr(1));。 -
你不使用
remainder->rev_recursive();返回的值(与remainder->getString()不同) -
感谢你们两位,仍然掌握了内存管理的窍门,所以我肯定会解决这个问题。以及刚刚点击我必须只是因为沮丧而看了看。当我在某个地方安顿下来时,我会对退货进行更改,看看是否能解决我的问题
-
避免新建/删除。反正你这里不需要它,只要使用 std::string 作为类型。
-
@Brennen Green 不清楚是需要反转作为字符串本身的数据成员,还是仅仅根据数据成员输出一个新的反转字符串。
标签: c++ string class recursion reverse