在不创建对象的情况下调用构造函数

时间:2013-09-19 10:18:31

标签: c++ object constructor

以下代码中究竟发生了什么。

#include<iostream.h>

class Demo
{
    public :

    Demo()
    {
        cout<<"\nIn Demo const";
    }
    ~Demo()
    {
        cout<<"\nin demo dest";
    }
};

void main() {
    Demo();
}

Demo()只是调用构造函数和析构函数。是否在此过程中创建了对象?那么是分配了内存吗?

2 个答案:

答案 0 :(得分:19)

您没有显式调用构造函数,而是此代码创建一个类型为Demo的临时未命名对象,该对象在;之后立即销毁。

是的,为此临时对象分配(自动,在堆栈上)内存,并在;之后释放(再次自动)。同时,正如预期的那样调用构造函数和析构函数。

答案 1 :(得分:0)

是的,内存已分配但在堆栈上,Demo()正在创建一个自动销毁的临时对象。