我有以下代码,当我用这样的空构造函数创建一个对象时它没有编译:
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
}
答案 0 :(得分:4)
PriorityQueue pq1();
以上语句不会创建对象。它是pq1
的函数声明,其返回类型为PriorityQueue
。
PriorityQueue pq1; // Remove ()