2014-12-26 2 views
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.

спасибо.

ответ

4
NoDef nd1(); 

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

NoDef nd2; 

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

+0

AH! не видел этого! – madu

Смежные вопросы