چرایی عدم نیاز توابع کتابخانه استاندارد به ایجاد شی

Aref_Alikhani

Well-Known Member
با سلام خدمت دوستان
ببخشید یه سوالی هست که بدجور ذهنم رو مشغول کرده...
چرا وقتی ما خودمون یه کلاس تعریف می کنیم که شامل یک یا چندین تابع هست برای استفاده از توابع اون کلاس حتما باید اول ازشون یه شی درست کنیم و بعد توابع رو از اون شی فراخوانی کنیم اما برای فراخوانی توابع کلاس های کتابخانه استاندارد cpp نیازی به این کار نیست؟مثلاً
[CPPS]//Aref classes
ArefClass myClass;
myClass.helloWorld();
//CPP standard classes:

float a,b;
a = 90;
b = cos(a);
[/CPPS]
 

the_king

مدیرکل انجمن
با سلام خدمت دوستان
ببخشید یه سوالی هست که بدجور ذهنم رو مشغول کرده...
چرا وقتی ما خودمون یه کلاس تعریف می کنیم که شامل یک یا چندین تابع هست برای استفاده از توابع اون کلاس حتما باید اول ازشون یه شی درست کنیم و بعد توابع رو از اون شی فراخوانی کنیم اما برای فراخوانی توابع کلاس های کتابخانه استاندارد cpp نیازی به این کار نیست؟مثلاً
[CPPS]//Aref classes
ArefClass myClass;
myClass.helloWorld();
//CPP standard classes:

float a,b;
a = 90;
b = cos(a);
[/CPPS]

cos یک تابع ئه اما تابع داخل کلاس نیست، مثل توابعی که قبل یا بعد از کد های مربوط ()main می نویسید.
یکبار کد داخل اون فایل های هدر مثل math.h رو ببینید، یکسری تعریف معمولی اند، بیرون کلاس و فاقد کلاس.

در ضمن اگر شما موقع تعریف یک متد از کلمه کلیدی static استفاده کنید، فراخوانی اون متد با اسم کلاس انجام میشه و بدون شیء
مثلا به شکل ()ArefClass.helloWorld فراخوانی میشه. فقط داخل همچین متد هایی که static اند نباید سراغ متد ها یا متغیر هایی که در کلاس تعریف شده اند
اما static نیستند بروید چون متد static فقط به چیز هایی که static اند دسترسی داره. هر چیزی که static نباشه نیاز به شیء داره.
 

جدیدترین ارسال ها

بالا