多次调用构造函数

时间:2013-06-27 19:07:31

标签: c++ constructor daemon

调试疯狂的系统。 类的构造函数被多次调用,它们的内存地址是相同的。这是否意味着它们是同一个对象? 创建对象@ 0xa3d82a0 创建对象@ 0xa3d82a0 创建对象@ 0xa3d82a0

我也看到xxxx是一个守护进程。 守护进程意味着什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

这可能只是意味着构造函数被保存在同一块内存中(引用的位置和所有这些)以节省内存。

至于问题的第二部分,引用:“守护进程(或服务)是一个后台进程,旨在自动运行,几乎不需要用户干预。”

Taken from here(不要打扰页面上的任何链接,它们似乎都死了。但是,只是拙劣的锚标签。)

答案 1 :(得分:1)

不,这不是同一个对象。一个对象只能构造一次。您看到的行为并非不可能,例如,如果在循环中在堆栈上分配了许多对象:

#include <iostream>

using namespace std;

struct A {
    A() { cout << "Creat" << this << endl; }
};

int main() {
    for (int i = 0; i < 5; i++) {
        A a;
    }
}

这里'a'将在同一个位置重建,打印如下:

Creat0xbfcd871f
Creat0xbfcd871f
Creat0xbfcd871f
Creat0xbfcd871f
Creat0xbfcd871f