#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"); } 调试器图片1 调试器图片2 请查阅,调试器应该进入reverse()函数。但它正在打开这些外部代码。
调试器正在进入std::string(const char*)构造函数。 在调用reverse之前,您的代码会在隐式调用此函数,因为您将"binod"(实际上具有类型const char*)传递给期望std::string的函数。这里没有问题,不是错误的函数,只是一个您没有意识到正在被调用的函数。 只需退出再重新进入即可。顺便说一句:Visual Studio的调试器具有“仅我的代码!”功能,启用后,调试器仅进入您编写的代码。 可以节省时间。