使用空构造函数创建对象

时间:2016-03-13 02:50:53

标签: c++

我有以下代码,当我用这样的空构造函数创建一个对象时它没有编译:

PriorityQueue pq1();
pq1.insert(3); // doesn't compile

但它的编译方式如下:

PriorityQueue pq2 = PriorityQueue();
pq2.insert(3); // compiles

为什么会这样?

PriorityQueue.h

class PriorityQueue
{
public:
    PriorityQueue();  // Create the heap
    ~PriorityQueue(); // Destroy the heap
}

PriorityQueue.cpp

#include "PriorityQueue.h"

PriorityQueue::PriorityQueue()
{

}

的main.cpp

#include "PriorityQueue.h"

int main()
{
    PriorityQueue pq1();
    pq1.insert(3); // doesn't compile

    PriorityQueue pq2 = PriorityQueue();
    pq2.insert(3); // compiles
}

1 个答案:

答案 0 :(得分:4)

PriorityQueue pq1();

以上语句不会创建对象。它是pq1的函数声明,其返回类型为PriorityQueue

PriorityQueue pq1; // Remove ()

Most Vexing parse