PDA

View Full Version : سوال: تفاوت داده ی static در حوزه ی کلاس و فایل



khafan_bat
جمعه 05 شهریور 1389, 14:12 عصر
به طور کلی یک متغیر استاتیک حداکثر میتونه حوزه ی فعالیت یک فایل داشته باشه وقتی از نوع global باشه یعنی در خارج از تابع و در اوایل فایل تعریف بشه در حالی که متغیر عمومی خارجی رو میشه با استفاده از extern به محدوده ی کل برنامه ( که ممکنه شامل چند فایل بشه ) تعمیم داد.

و اما

در کلاس ها نیز ما با داده هایی برخورد میکنیم که static هستند و این داده ها بین تمام اشیا برابر است ( هدف از ایجاد این داده ها نیز همین است ) . سوال اینجاست :

1 ) تفاوت عملکرد عبارت استاتیک وقتی به یک متغیر اضافه میشود در حوزه ی فایل و کلاس در چیست ؟ آیا این static همان static است ؟؟

2 ) این جمله درست است که بگوییم : " تنها زمانی می شود یک کلاس داده ی ثابت داشته باشد که آن داده ثابت static باش ؟

3) آیا اگر یک داده ی استاتیک در کلاس از نوع ثابت بسازیم و مقدار اولیه ندیهیم . مقدار صفر میگیرد ؟ ( طبق تعریفی که از یک داده ی استاتیک وجود دارید ؟ )

با تشکر

khafan_bat
جمعه 05 شهریور 1389, 16:09 عصر
این سی پلاس پلاس تموم شدنی نیست. !! ممنون مهندس
--------------------

نسبت به مطالبی که بالا گفتم ، نه.

من راه دیگری جز اینکه یک داده ی ثابت در کلاس به صورت زیر تعریف کنم پیدا نکردم میتونی مثال دیگه ای بزنی


const static int n=12;

khafan_bat
جمعه 05 شهریور 1389, 16:47 عصر
آهان راست میگی . یکی هستند . وقتی بیرون کلاس هم تعریف کنیم اشیا ی ساخته شده به اون دستری دارند و . . . استفاده از :: و . . . . متوجه شدم دوست عزیز

khafan_bat
جمعه 05 شهریور 1389, 17:18 عصر
داده ی استاتیک کلاس رو میشه خارج از کلاس مقدار دهی کرد یا بهش دسترسی داشت. اما مگه میشه خارج از کلاس تعریف کرد ؟ ( ایجاد کرد ) برای مثال حوزه ی دسترسی متغیر m چیست ؟



#include <iostream>
#include <conio.h>

using namespace std;

static int m;

class test {
public:
void pluplus(void) {
m++;
}
};