C ++ 'da Depolama Sınıfları
Bir depolama sınıfı, bir C ++ Programı içindeki değişkenlerin ve / veya işlevlerin kapsamını (görünürlük) ve yaşam süresini tanımlar. Bu belirteçler, değiştirdikleri türden önce gelir. Bir C ++ Programında kullanılabilen aşağıdaki depolama sınıfları vardır
- auto
- register
- static
- extern
- mutable
Otomatik Depolama Sınıfı
auto depolama sınıfı, tüm yerel değişkenler için varsayılan depolama sınıfıdır.
{
int mount;
auto int month;
}
Yukarıdaki örnek, aynı depolama sınıfına sahip iki değişkeni tanımlar; auto yalnızca işlevler, yani yerel değişkenler içinde kullanılabilir.
Kayıt Depolama Sınıfı
registerdepolama sınıfı, RAM yerine bir kayıtta depolanması gereken yerel değişkenleri tanımlamak için kullanılır. Bu, değişkenin yazmaç boyutuna eşit bir maksimum boyuta sahip olduğu (genellikle bir kelime) ve ona tekli '&' operatörünün uygulanamayacağı anlamına gelir (bellek konumu olmadığı için).
{
register int miles;
}
Kayıt, yalnızca sayaçlar gibi hızlı erişim gerektiren değişkenler için kullanılmalıdır. Ayrıca 'kayıt' tanımlamanın değişkenin bir kayıtta saklanacağı anlamına gelmediği de unutulmamalıdır. Bu, donanım ve uygulama kısıtlamalarına bağlı olarak bir kayıt defterinde saklanabileceği anlamına gelir.
Statik Depolama Sınıfı
staticdepolama sınıfı, derleyiciye bir yerel değişkeni kapsamın dışına çıkıp çıktığı her seferinde onu oluşturmak ve yok etmek yerine programın ömrü boyunca varlığını sürdürmesi talimatını verir. Bu nedenle, yerel değişkenleri statik yapmak, işlev çağrıları arasında değerlerini korumalarına izin verir.
Statik değiştirici aynı zamanda global değişkenlere de uygulanabilir. Bu yapıldığında, değişkenin kapsamının bildirildiği dosya ile sınırlı olmasına neden olur.
C ++ 'da, statik bir sınıf veri üyesinde kullanıldığında, o üyenin yalnızca bir kopyasının sınıfının tüm nesneleri tarafından paylaşılmasına neden olur.
#include <iostream>
// Function declaration
void func(void);
static int count = 10; /* Global variable */
main() {
while(count--) {
func();
}
return 0;
}
// Function definition
void func( void ) {
static int i = 5; // local static variable
i++;
std::cout << "i is " << i ;
std::cout << " and count is " << count << std::endl;
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
i is 6 and count is 9
i is 7 and count is 8
i is 8 and count is 7
i is 9 and count is 6
i is 10 and count is 5
i is 11 and count is 4
i is 12 and count is 3
i is 13 and count is 2
i is 14 and count is 1
i is 15 and count is 0
Harici Depolama Sınıfı
externdepolama sınıfı, TÜM program dosyaları tarafından görülebilen genel bir değişkenin referansını vermek için kullanılır. 'Extern' kullandığınızda, değişken başlatılamaz, çünkü tek yaptığı şey değişken adını önceden tanımlanmış bir depolama konumuna yönlendirmektir.
Birden fazla dosyanız olduğunda ve diğer dosyalarda da kullanılacak global bir değişken veya işlev tanımladığınızda, extern , tanımlı değişken veya işleve referans vermek için başka bir dosyada kullanılacaktır. Sadece anlamak için extern , başka bir dosyadaki global bir değişkeni veya işlevi bildirmek için kullanılır.
Harici değiştirici en yaygın olarak, aşağıda açıklandığı gibi aynı genel değişkenleri veya işlevleri paylaşan iki veya daha fazla dosya olduğunda kullanılır.
İlk Dosya: main.cpp
#include <iostream>
int count ;
extern void write_extern();
main() {
count = 5;
write_extern();
}
İkinci Dosya: support.cpp
#include <iostream>
extern int count;
void write_extern(void) {
std::cout << "Count is " << count << std::endl;
}
Burada extern anahtar sözcüğü başka bir dosyadaki sayımı bildirmek için kullanılmaktadır. Şimdi bu iki dosyayı aşağıdaki gibi derleyin -
$g++ main.cpp support.cpp -o write
Bu üretecek write çalıştırılabilir program, çalıştırmayı deneyin write ve sonucu aşağıdaki şekilde kontrol edin -
$./write
5
Değiştirilebilir Depolama Sınıfı
mutablebelirtici yalnızca bu öğreticide daha sonra ele alınan sınıf nesneleri için geçerlidir. Bir nesnenin bir üyesinin const üye işlevini geçersiz kılmasına izin verir. Yani, değiştirilebilir bir üye, bir sabit üye işlevi tarafından değiştirilebilir.