#include<iostream>
#include<string>
using namespace std;
void reverse(string s){
if(s.length()==0){ //base case
return;
}
string ros=s.substr(1);
reverse(ros);
cout<<s[0];
}
int main(){
reverse("binod");
}
debugger_img_1
debugger_img_2
调试器应该进入reverse()函数,但是它打开了这些外部代码。
1条答案
按热度按时间vu8f3i0k1#
调试器正在单步执行
std::string(const char*)
构造函数。您的代码在调用reverse
之前隐式调用此构造函数,因为您将"binod"
(实际上具有const char*
类型)传递给需要std::string
的函数。这里没有什么问题,不是函数出错,只是你没有意识到函数被调用了。只要退出,然后再进入。
旁注:Visual Studio的调试器具有“仅我的代码!”功能,启用该功能后,意味着调试器仅单步执行您编写的代码。这可以节省大量时间。