#include<iostream>
using namespace std;
class NoDef {
public:
NoDef();
};
int main(int argc, char** argv)
{
NoDef nd1(); // Line 1
NoDef nd2; // Line 2
return 0;
};
Таким образом, строка # 1 не имеет проблем при компиляции, но строка # 2 дает ошибку компоновщика. Я понимаю ошибку компоновщика. Не существует никакого определения для ссылки. Но почему строка 1 не дает никаких ошибок? Какая разница в скобках?
Использование VS2013.
Спасибо.
NoDef nd1();
объявляет функцию с именем nd1
возвращающим объект Nodef
, без ошибок
NoDef nd2;
пытается использовать конструктор, который не определен, следовательно, компоновщик недоволен