c++调试返回0回变量

c++ debugging return 0 back to variable

本文关键字:变量 0回 返回 调试 c++      更新时间:2023-10-16

我是c++新手,我一直在学习程序是如何执行的。我正在处理这个代码:

#include <iostream>
#include <string>
using namespace std;
void sayHello() {
    cout << "Hello world!" << endl;
}
void greet(string name) {
    cout << "Hello " << name << ", how are you?" << endl;
}
int main()
{
    sayHello();
    int a = 10;
    string name = "Johan";
    greet(name);
    return 0;
}

我在代码块IDE中调试了这个代码。当到达return 0语句时,黄色箭头(步进模式)返回到string name语句,然后再次转到return语句,完成调试。我认为这与释放内存有关,但为什么不去int a = 10 ?

正常吗?调试器做了什么?调试器不应该直接进入结束括号吗?

这是因为std::string是一个具有非默认析构函数的类,这是调试器通过调用其析构函数来告诉您它即将销毁这个std::string对象的方式。调试器会说,好,我现在正在执行返回语句,第一件事是销毁std::string,所以执行跳转到声明std::string对象的那行,让你知道我要执行这个析构函数;现在,我已经完成了,现在我将继续从这个函数返回的过程。

普通的int没有花哨的析构函数,也不需要做任何特别的事情来消除它。