c ++调试返回0回到变量

时间:2016-11-16 02:43:08

标签: c++ debugging

我是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;
}

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

这是正常的吗?调试器做了什么?调试器不应该直接转到结束括号吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

这是因为std::string是一个带有非默认析构函数的类,这是调试器告诉你它要销毁这个std::string对象的方法,通过调用它的析构函数。调试器用很多的话来说,好吧,我现在正在做return语句,而第一个业务是破坏这个std::string,所以执行跳转到了声明了这个std::string对象,让你知道我即将执行这个析构函数;现在,在那里,我已经完成了,现在我将恢复从此功能返回的过程&#34;。

普通的int没有一个奇特的shmancy析构函数,没有什么特别需要做的,以使其消失。