Создание конструктора по умолчанию с / без паратезов

0
#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.

Спасибо.

Теги:
linker-errors
default-constructor

1 ответ

4
Лучший ответ
NoDef nd1();  

объявляет функцию с именем nd1 возвращающим объект Nodef, без ошибок

NoDef nd2;

пытается использовать конструктор, который не определен, следовательно, компоновщик недоволен

  • 0
    AH! не видел этого!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню