Я столкнулся с каким-то странным поведением конструктора без параметров в C++, которого я не понимаю:
Строка myClass c;
вызывает конструктор без параметров, а строка myClass c();
— нет. Почему это происходит? И что вызывается, когда я использую c()
?
Пример, где это происходит:
//myClass.h
class myClass{
public:
myClass();
myClass(int x);
}
//myClass.cpp
#include "myClass.h"
#include <iostream>
myClass::myClass(){
std::cout << "Class created." << std::endl;
}
myClass::myClass(int x){
std::cout << "Class created with value " << x << std::endl;
}
Основная функция:
#include "myClass.h"
int main()
{
myFancyClass c1;//paramterless contructor gets called
myFancyClass c2();//something I do not understand happens
myFancyClass c3(2);//int contructor gets called
}
Результат:
Class created
Class created with value 2
Итак, еще раз: почему это происходит? И что на самом деле происходит, когда я звоню c2()
?