Latest web development tutorials

C ++ kelas penyimpanan

Kelas penyimpanan mendefinisikan C ++ variabel program / berbagai fungsi (visibilitas) dan siklus hidup. specifier ini ditempatkan sebelum mereka mengubah jenis. Di bawah ini adalah storage kelas C ++ program yang tersedia:

  • mobil
  • daftar
  • statis
  • extern
  • yg mungkin berubah

kelas penyimpanan auto

kelas penyimpananotomatis semua kelas variabel penyimpanan default lokal.

{
   int mount;
   auto int month;
}

Contoh di atas mendefinisikan dua variabel dengan kelas penyimpanan yang sama, otomatis hanya dapat digunakan dalam fungsi, yaitu auto hanya memodifikasi variabel lokal.

mendaftar kelas penyimpanan

mendaftar kelas penyimpanan digunakan untuk mendefinisikan disimpan dalam register bukannya RAM di variabel lokal.Ini berarti bahwa ukuran maksimum dari variabel sama dengan ukuran register (biasanya kata), dan tidak dapat diterapkan untuk itu unary '&' operator (karena tidak memiliki lokasi memori).

{
   register int  miles;
}

Butuh hanya mendaftar untuk akses cepat ke variabel, seperti counter. Hal ini juga harus dicatat bahwa definisi 'daftar' tidak berarti variabel yang akan disimpan dalam register, itu berarti bahwa variabel dapat disimpan dalam register, tergantung pada keterbatasan hardware dan implementasi.

kelas penyimpanan statis

statis kelas penyimpanan menginstruksikan compiler untuk menjaga keberadaan variabel lokal dalam siklus hidup program, tanpa perlu memasukkannya setiap kali Anda pergi keluar dari ruang lingkup dan diciptakan dan dihancurkan.Oleh karena itu, penggunaan variabel lokal statis dapat dimodifikasi untuk mempertahankan nilai variabel lokal antara fungsi panggilan.

pengubah statis dapat diterapkan untuk variabel global. Ketika dimodifikasi variabel global statis, variabel akan membatasi ruang lingkup pernyataan di file-nya.

Dalam C ++, bila digunakan pada static data anggota kelas, semua benda akan menghasilkan hanya satu salinan dari anggota kelas dibagi.

#include <iostream>
 
// 函数声明 
void func(void);
 
static int count = 10; /* 全局变量 */
 
int main()
{
    while(count--)
    {
       func();
    }
    return 0;
}
// 函数定义
void func( void )
{
    static int i = 5; // 局部静态变量
    i++;
    std::cout << "变量 i 为 " << i ;
    std::cout << " , 变量 count 为 " << count << std::endl;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

变量 i 为 6 , 变量 count 为 9
变量 i 为 7 , 变量 count 为 8
变量 i 为 8 , 变量 count 为 7
变量 i 为 9 , 变量 count 为 6
变量 i 为 10 , 变量 count 为 5
变量 i 为 11 , 变量 count 为 4
变量 i 为 12 , 变量 count 为 3
变量 i 为 13 , 变量 count 为 2
变量 i 为 14 , 变量 count 为 1
变量 i 为 15 , 变量 count 为 0

kelas penyimpanan extern

kelas penyimpananextern digunakan untuk memberikan referensi ke variabel global, variabel global untuk semua file program yang terlihat.Bila Anda menggunakan 'extern', yang tidak bisa menginisialisasi variabel, nama variabel akan mengarah ke lokasi penyimpanan yang ditetapkan sebelumnya.

Bila Anda memiliki beberapa dokumen dan mendefinisikan variabel global atau fungsi yang dapat digunakan dalam dokumen lainnya, Anda dapat menggunakanexterndi file lain untuk mendapatkan referensi variabel atau fungsi yang didefinisikan. Hal ini dapatdipahami,extern digunakan untuk mendeklarasikan variabel global atau fungsi dalam file lain.

pengubah extern biasanya digunakan ketika ada dua atau lebih file berbagi variabel global yang sama atau fungsi dari waktu, sebagai berikut:

file pertama: main.cpp

#include <iostream>
 
int count ;
extern void write_extern();
 
int main()
{
   count = 5;
   write_extern();
}

Kedua berkas: support.cpp

#include <iostream>
 
extern int count;
 
void write_extern(void)
{
   std::cout << "Count is " << count << std::endl;
}

Di sini, kedua kata kunci berkasexterndigunakan untuk menyatakan hitungan pertama telah didefinisikan dalam main.cpp file dalam. Sekarang, kompilasi kedua file, sebagai berikut:

$ g++ main.cpp support.cpp -o write

Ini menghasilkanmenulis program executable mencoba untuk melakukan write,akan menghasilkan hasil sebagai berikut:

$ ./write
Count is 5

kelas penyimpanan bisa berubah

specifierbisa berubah hanya berlaku untuk kelas objek, yang akan berada di akhir tutorial ini untuk menjelaskan.Hal ini memungkinkan anggota konstanta objek pengganti. Artinya, anggota bisa berubah dapat dimodifikasi oleh fungsi anggota const.