تفاوت ساخت کلاس با پرانتز و بدون پرانتز - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تفاوت ساخت کلاس با پرانتز و بدون پرانتز

+2 امتیاز

سلام .

چه تفائتی بین این 2 روش ایجاد کلاس وجود داره :

MyClass a();



MyClass b;

 

سوال شده بهمن 19, 1392  بوسیله ی GENOM (امتیاز 34)   2 5 8
ویرایش شده بهمن 23, 1392 بوسیله ی BlueBlade

2 پاسخ

+2 امتیاز
 
بهترین پاسخ

اولی 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;

 

البته بهتره از همون دومی استفاده بشه . (به خاطر خوانایی بیشتر )
 

پاسخ داده شده بهمن 21, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
ویرایش شده بهمن 21, 1392 بوسیله ی BlueBlade
0 امتیاز
سلام.

کلاسی که  سازنده براش تعریف شده باشه وقتی به روش دوم تعریف بشه کامپایلر ارور میده.
پاسخ داده شده بهمن 19, 1392 بوسیله ی محمد قدیانی (امتیاز 317)   1 9
در ضمن روش دوم اگر پارامترهای سازنده پیش فرض نداشته باشه شما مقید هستید پارامترها را مشخص کنید در غیر اینصورت موردی نداره.
...