اولی function declaration هست ربطی هم به تعریف سازنده نداره .
برای همینه که کد زیر با وجودی که سازنده هم نداره این ارور رو میده : undefined refrence to a
#include <iostream>
using namespace std;
class MyClass
{
public:
void operator() ()
{
cout<<"in ()\n";
}
};
int main()
{
MyClass a();
a();
}
دومی برای ساخت کلاس استفاده میشه.
یعنی اگر پرانتز رو حذف کنین و به روش دوم بنویسین کد بالا درست کار می کنه .
موقع صدا زدن new فرقی نمی کنه از کدوم یکی از این 2 تا استفاده کنین :
MyClass* c1= new MyClass();
MyClass* c2= new MyClass;
البته بهتره از همون دومی استفاده بشه . (به خاطر خوانایی بیشتر )