PDA

View Full Version : توابع عضو static



suraty
پنج شنبه 05 آبان 1390, 22:37 عصر
سلام
تو کتاب آقای جعفر نژاد قمی این مطلب رو برای توابع از نوع استاتیک نوشته بود.
توابع عضو کلاس را نیز می توان به صورت استاتیک تعریف کرد. ولی محدودیت هایی در این خصوص وجود دارد. آنها فقط مستقیما می توانند به سایر اعضای استاتیک کلاس مراجعه کنند.(البته این توابع می توانند به داده ها و توابع عمومی دسترسی داشته باشند.)
اونچه که داخل پرانتز هست رو من به صورت زیر برداشت کردم و برنامه ی زیر رو نوشتم. اما تابع عمومی show شناخته شده نبود.


#include"iostream.h"
#include"conio.h"
class class1{
static int a;
public:
static void fun(int n){
a=n;
show();
}
void show(){
cout<<a;
}
};
int class1::a;
int main(){
class1 ob;
ob.fun(3);
class1::fun(7);
ob.fun(5);
return 0;
}

rezaricky
جمعه 06 آبان 1390, 20:43 عصر
دلیلش اینه که : تابع show هنگامی قابل فراخوانی هست که یک شی از کلاس class1 ایجاد شده باشد اما تابع fun را به این دلیل که static هست میتوان بدون ایجاد شی از کلاس class1 فراخوانی کرد.
اگه تابع show رو هم static تعریف کنی اون موقع برنامه درست کار میکنه

اگه میخوای مفاهیم برنامه نویسی شی گرا رو درست بفهمی بهتره یک کتاب مانند کتاب c++ how to program رو بخونی که کامل همه چی رو توضیح داده