Tuesday

13

December

2016


0

YORUM


Compe 225 | C++ Ders 12 Const, Static, Extern Nedir ?

7 ay önce yazıldı, 7 ay önce güncellendi.

c++,compe225,const,ders not,dersi notu,extern,nedir,örnekleri,static,davutkaraBAZI YENİ TERİMLER

(Kullanınca güzel olan bazı terimler.)

Const terimi , genellikle değer değiştirme işlevi olmayan function ve değeri sabit veriable lar da başına const getiriyoruz. Özetle get functionlar değer okuyup return ettiği için const olması makuldür, ancak set functionlar değer atadığı ve değişim yaptığı için const yapılamaz.

Bir veriable için :  const int = 5;              

Bir function için : int getNumber()const{return Number;}

Yani bir function için const yazarken prototypedan sonra scope dan önce, arasına yazıyoruz.

Static terimi, bir class ın kaç defa create edildiğini saymak istiyoruz mesela, nasıl yaparız ? Global bir değişken tanımlayıp bu değişkeni constructor içinde 1 artırırız, ancak kodumuz güzel olmaz, çünkü bu değişken classla ilgili olmasına rağmen class ın dışında kalır ve dışardan değiştirilebilir konumda olur. Static keywordunu kullanarak bu veriable ın class kaç kere oluşturulursa oluşturulsun tekrar tekrar create edilmesine izin vemeyip başta 1 defa create edilmesine izin veriyoruz daha sonrada class her oluşturulduğunda değerini 1 artırıyoruz. Kullanımda genellkle diğer değişkenler gibi class ın private kısmına yazılıyor. Yazımı ise şu şekilde, veriable için: static int sayac=0; 

Benzer bir şekilde static function içinde geçerli, tekrar edilebilecek bir şeyin içinde sadece 1 defa declare edilmesini istiyorsak static kullanıcaz, yani mesela bir class ı 5 tane objeye aktarabiliriz ama içindeki fonksiyon 5 kere açılmasın sadece 1 defa açılsın istiyoruz hepsi bu. Mesela class içinde toplama çıkarma yapan bir fonksiyon olsun, bu fonksiyon class içinde ama bu class ı 5 ayrı objeye atadığımızda bu basit fonksiyonda 5 kere create edilmiş olacak ne gerek var static diyelim, 1 tane olsun 5 ayrı objede ortak kullansın, şimdi anladın mı ? Kullanıım şekli şu şekilde. Başına static geliyor okadar.

Function için: static void deleteID(){id=0;}

Extern dışarda tanımlanmış bir veriable olur obje olur, içerideki  başka bir veriable a aktarılmasını demeyelim de işaret (pointer gibi) edilmesini, gösterilmesini sağlıyor. Çünkü içeri dahil ettiğimiz değeri içerde değiştirince haliyle dışardaki de değişiyor. Ama bu genellikle bu kadar yakın kodlarda değilde ayrı sayfalarda bulunan ve birine include edilmiş sayfalarda kullanılıyor, aynı sayfada kullanılması çokta bir şey ifade etmiyor,  biraz anlamak için aşağıdaki örneğe bakabiliriz.

#include <iostream>
using namespace std;
int a = 5;
int simdiNeOldu(){
return a;
}
int main(){		
extern int a;
cout << a << endl;
a = 6;
cout << simdiNeOldu();
return 0;
}

-Aslında evet extern int a yazmasakta aynı sonucu verirdi, ama int a = 5; in başka bir sayfada tanımlı olduğunu düşünün, o zaman biraz daha anlaşılır oluyor.