3 Şubat 2020 Pazartesi

Static Member Variable

Giriş
Türkçesi "Statik Üye Değişken". Açıklaması şöyle. static kelimesi storage-class-specifier kabul edilir.
Static members of a class are not associated with the objects of the class: they are independent objects with static storage duration or regular functions defined in namespace scope, only once in the program.
Değişken nesneye değil, sınıfa ait kabul edilir.

Static Değişkene :: Karakteri İle Erişilir
Örnek
Elimizde şöyle bir kod olsun. data ve data2 yapıları aynı isimli alana sahiptirler. Ancak f() metodunda static alana erişmek için :: kullanılıyor.
struct data {
  static int member;
};

struct data2 {
  int member;
};

void f(data2& data) {
  data.member = data::member;
}

Değişkenleri Bitişik Yazmak Mümkün
Örnek
Açıklaması şöyle.
At most one storage-class-specifier shall appear in a given decl-specifier-seq [..]The storage-class-specifier applies to the name declared by each init-declarator in the list [..]
Elimizde şöyle bir kod olsun. Bir kere static yazmak yeterli. s_One ve s_Two değişkenleri static olur.
class Example {
  static int s_One, s_Two;

  ...
};
Diğer
Örnek
Elimizde şöyle bir kod olsun.
class A {
  public:
    static int a;
};
int A::a = 0;

class B {
  public:
    static A a1;
};
A B::a1;

class C {
  public:
    static A a1;
};
A C::a1;


int main(int argc, const char * argv[]) {
  C::a1.a++;
  B::a1.a++;
  std::cout << B::a1.a << ", " << C::a1.a << std::endl;
  return 0;
}
Çıktı olarak şunu alırız. Çünkü A sınıfı hem B hem de C içinde mevcut ve iki defa artırılmakta.
2, 2

Hiç yorum yok:

Yorum Gönder