برای اجرا شدن سازنده یک کلاس حتما باید یک شی از کلاس رو بسازیم؟
بله . حتما . اگه بصورت دستی هم صدا کنیدش یه شی موقت (Temporary) بوجود میاد .
نمیشه مثلا زمانی که میخواهیم از داخل کلاس A تابعی از کلاس B رو فراخوانی میکنیم بگیم سازنده B رو هم اجرا کن؟
چرا . میشه .
کلا در چه زمانی سازنده کلاس فراخوانی و اجرا میشه؟
وقتی یه نمونه از یک کلاس رو درست میکنیم . تابع سازنده اون کلاس هم صدا زده میشه . اگر چندتا تابع سازنده داشته باشه نسبت به پارامترهایی که موقع ساخت نمونه کلاس میفرستیم سازنده کلاس انتخاب میشه و صدا زده میشه .
یا مثل کد پایین میشه اون سازنده رو دستی صدا زد . ولی باید به این توجه کنید که یه شی موقت درست میشه که باید حواستون بهش باشه .
مثلا میتونی به این شکل این کارها رو انجام بدی :
#include <iostream>
using namespace std;
class B
{
public:
B() {data = 0;}
B(int num){ data = num;}
int data;
};
class A
{
public:
A() : b(4){}
int Foo (void)
{
b = B(3);
return b.data;
}
B b;
};
int main ()
{
A t;
cout<<t.b.data<<endl;
t.Foo();
cout<<t.b.data<<endl;
cout<<B(6).data<<endl;
return 0;
}