c++调试返回0回变量
c++ debugging return 0 back to variable
我是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
没有花哨的析构函数,也不需要做任何特别的事情来消除它。
相关文章:
- 是否可以影响 C++ 中回调函数的局部变量?
- 为什么可以在没有实例变量的情况下访问静态回调方法中的静态成员变量?
- 回调函数,用于在同一对象中设置私有变量
- Winsock 2,将变量凝结成一个字符串,将其发送出去,然后再进行回收并将其读回
- 如何将结构的变量推回向量
- 如何在 c++ 结构中的 void* 变量中调用存储函数(回调)
- boost ::绑定发送变量的回调args到回调函数
- 如何访问成员变量 sqlite 回调
- C++-17变量模板:捕获回调参数的返回类型和参数类型
- 无法访问在 std 回调中传递的对象变量
- 通过初始化列表或变量推回结构的数组
- C++如何通过回调方法访问成员变量
- 我可以在不使用全局变量的情况下将信息传递给函数指针回调吗?
- 将 [char] 变量转换为 [int],然后再转换回 [char]
- 将静态变量重置回 false
- 写回全局变量
- 回调方法无法访问成员变量或实例
- c++调试返回0回变量
- 如何在第三方库调用的回调函数中传递/使对象/变量可访问
- Windows Phone 8.1:带有IList变量的c#回调无法强制转换为vector