Fungsi Anggota Statis di C++ (Contoh)

Apa yang dimaksud dengan Fungsi Statis C++?

In C++ kelas, anggota statis adalah anggota kelas yang termasuk dalam kelas tersebut, bukan objeknya. Anda hanya akan memiliki satu salinan keanggotaan. Hal ini terjadi terlepas dari jumlah objek yang Anda buat.

Ketika fungsi kelas didefinisikan sebagai statis, semua objek kelas berbagi anggota kelas statis. Oleh karena itu, fungsi statis dapat diakses tanpa membuat objek kelas apa pun dan menjadi independen objek kelas. Anggota data statis di C++ dapat mengakses fungsi statis lainnya, di luar kelas saja.

Mengapa menggunakan Fungsi Statis?

Berbeda C++ fungsi global, fungsi statis hanya dapat diakses dari file deklarasi. Jika ada kebutuhan untuk membatasi akses ke suatu fungsi, jadikan fungsi tersebut statis.

Gunakan fungsi statis untuk membatasi penggunaan kembali nama fungsi yang sama di file lain.

Mendefinisikan Fungsi Statis di C++

sintaks:

static int myfunc(void)
{
    cout("Example of C++ static function ");
}

Dalam contoh di atas, kita mendefinisikan fungsi statis bernama myfunc. Perhatikan penggunaan kata kunci statis dalam definisi. Kata kunci muncul sebelum nama fungsi.

Fungsi Anggota Statis di C++

Ketika anggota fungsi dideklarasikan statis, ia menjadi independen terhadap objek lain di kelas. Anda dapat memanggil fungsi anggota statis meskipun tidak ada objek kelas lain.

Untuk mengakses nama kelas, Anda harus menggunakan nama kelas dan operator resolusi cakupan (::). Fungsi statis hanya dapat mengakses fungsi statis lainnya, anggota data statis, dan fungsi lain di luar kelas. Ruang lingkup fungsi anggota statis terletak di dalam kelas, dan mereka tidak dapat mengakses penunjuk kelas ini.

Contoh 1

#include<iostream>
using namespace std;
class BoxClass {
public:
	static int count;
	BoxClass(double l = 2.0, double b = 2.0, double h = 2.0) {
		cout << "Class constructor called." << endl;
		length = l;
		breadth = b;
		height = h;
		count++;
	}
	double getVolume() {
		return length * breadth * height;
	}
	static int getCount() {
		return count;
	}
private:
	double length;     
	double breadth;    
	double height;     
};
int BoxClass::count = 0;
int main(void) {
	cout << "Inital value of count is : " << BoxClass::getCount() << endl;
	BoxClass Box1(3.2, 1.4, 1.8);    
	BoxClass Box2(7.5, 4.0, 4.0);   
	cout << "Final value of count is : " << BoxClass::getCount() << endl;
	return 0;
}

Keluaran:

Fungsi Anggota Statis

Berikut ini tangkapan layar kodenya:

Fungsi Anggota Statis

Penjelasan Kode:

  1. Termasuk file header iostream di file C++ program untuk menggunakannya fungsi.
  2. Sertakan namespace std dalam kode untuk menggunakan kelasnya tanpa memanggilnya.
  3. Buat kelas bernama BoxKelas.
  4. Gunakan pengubah akses publik untuk menandai anggota kelas yang dapat diakses publik.
  5. Deklarasikan anggota kelas statis bernama count.
  6. Gunakan konstruktor kelas untuk menginisialisasi tiga variabel bertipe ganda.
  7. Cetak beberapa teks di konsol. Fungsi endl (garis akhir) memindahkan kursor mouse ke baris berikutnya.
  8. Inisialisasi nilai l ke panjang variabel.
  9. Inisialisasi nilai b ke lebar variabel.
  10. Inisialisasi nilai h ke ketinggian variabel.
  11. Kemudian Tingkatkan nilai variabel count sebanyak 1 setiap kali objek baru dibuat.
  12. Akhir dari badan konstruktor.
  13. Buat fungsi bernama doublevolume().
  14. Tentukan apa yang akan dikembalikan oleh fungsi doubleVolume(). Fungsi ini akan mengembalikan perkalian variabel panjang, lebar, dan tinggi.
  15. Akhir dari badan fungsi doubleVolume()
  16. Deklarasikan fungsi statis bernama getCount().
  17. Fungsi getCount() harus mengembalikan nilai variabel count.
  18. Akhir dari isi fungsi getCount().
  19. Gunakan pengubah akses pribadi untuk menandai anggota kelas sebagai dapat diakses publik.
  20. Mendeklarasikan anggota kelas yang diberi nama length dari tipe data double. Kelas tersebut dapat diakses secara pribadi.
  21. Nyatakan anggota kelas lain bernama breadth dengan tipe data double. Kelas tersebut akan dapat diakses secara pribadi.
  22. Mendeklarasikan anggota kelas bernama height dengan tipe data double. Kelas tersebut dapat diakses secara pribadi.
  23. Ujung tubuh BoxKelas kelas.
  24. Kemudian Inisialisasi anggota statis dari BoxKelas kelas.
  25. Memanggil fungsi main(). Itu C++ logika program harus ditambahkan dalam isi fungsi itu.
  26. Cetak beberapa teks di konsol yang menyatakan jumlah objek saat ini sebelum objek baru dibuat.
  27. Mendeklarasikan objek bernama Box1, yang merupakan salah satu instance dari kelas BoxKelas. Nilai lebar, panjang, dan tinggi harus ditentukan dalam tanda kurung.
  28. Mendeklarasikan objek bernama Box2, yang merupakan turunan dari kelas BoxKelas. Nilai lebar, panjang, dan tinggi telah ditentukan dalam tanda kurung.
  29. Cetak beberapa teks di konsol yang menyatakan jumlah objek saat ini setelah pembuatan objek baru.
  30. The C++ program harus mengembalikan nilai setelah berhasil diselesaikan.
  31. Akhir dari isi fungsi main().

Mengakses Fungsi Statis

Anda tidak perlu membuat objek kelas untuk mengakses fungsi statis. Sebagai gantinya, Anda dapat menggunakan nama kelas dan operator resolusi cakupan. (::).

sintaks:

className::funcName

Di atas, className adalah nama kelas di mana fungsi statis telah didefinisikan. funcName adalah nama yang ditetapkan untuk fungsi statis.

Contoh 2

#include<iostream> 
using namespace std;
class MyClass {
public:
	static void msgFunc() {
		cout << "Welcome to Guru99!";
	}
};
int main() {
	MyClass::msgFunc();
}

Keluaran:

Mengakses Fungsi Statis

Berikut ini tangkapan layar kodenya:

Mengakses Fungsi Statis

Penjelasan Kode:

  1. Menyertakan file header iostream dalam program kami untuk menggunakan fungsinya.
  2. Sertakan namespace std dalam kode Anda untuk menggunakan kelasnya tanpa memanggilnya.
  3. Buat kelas bernama MyClass.
  4. Gunakan pengubah akses publik untuk menandai anggota kelas sebagai dapat diakses publik.
  5. Mendeklarasikan fungsi statis bernama msgFunc(). Kata kunci static membuat fungsi menjadi statis.
  6. Tentukan teks yang akan dicetak di konsol setelah fungsi di atas dipanggil/dipanggil.
  7. Akhir dari isi fungsi msgFunc().
  8. Akhiri badan kelas.
  9. Memanggil fungsi main().
  10. Panggil fungsi statis bernama msgFunc().
  11. Akhir dari isi fungsi main().

Mengakses Variabel Statis

Variabel statis merupakan bagian dari suatu kelas, bukan objek kelas. Jika variabel statis bersifat publik, variabel tersebut dapat diakses menggunakan nama kelas dan menggunakan operator resolusi cakupan. Namun, hal ini tidak mungkin dilakukan jika anggota statis bersifat privat.

Biasanya, variabel privat diakses menggunakan fungsi publik. Namun, instance/objek kelas harus dibuat. Solusinya adalah dengan menggunakan fungsi statis.

Contoh 3: Variabel statis dalam C++ kelas

#include<iostream> 
using namespace std;
class AClass {
private:
	static int myvar;
public:
	static int getVar() { 
		return myvar; 
		} 
};
int AClass::myvar = 23; 
int main() {
	cout <<"The value of myvar is: "<< AClass::getVar() << '\n';
}

Keluaran:

Mengakses Variabel Statis

Berikut ini tangkapan layar kodenya:

Mengakses Variabel Statis

Penjelasan Kode:

  1. Menyertakan file header iostream dalam program kami.
  2. Sertakan namespace std dalam program ini untuk menggunakan kelasnya tanpa menelepon.
  3. Buat kelas bernama AClass.
  4. Gunakan pengubah akses pribadi untuk membuat variabel myvar dapat diakses secara pribadi.
  5. Buat variabel integer statis bernama myvar.
  6. Gunakan pengubah akses publik yang menandai fungsi getVar() sebagai dapat diakses publik.
  7. Membuat fungsi statis bernama getVar().
  8. Fungsi getVar() seharusnya dapat mengembalikan nilai variabel myvar.
  9. Akhir dari isi fungsi getVar().
  10. Akhir dari badan kelas AClass.
  11. Tetapkan variabel myvar nilai 23. Kami telah menggunakan operator resolusi nama kelas dan ruang lingkup untuk ini.
  12. Memanggil fungsi main().
  13. Cetak nilai variabel myVar pada konsol bersama teks lainnya. Kami telah menggunakan nama kelas, fungsi statis, dan operator resolusi cakupan untuk mengakses nilai variabel ini.
  14. Akhir dari isi fungsi main().

Pointer ini dalam Fungsi Statis

Fungsi statis tidak melekat pada suatu objek. Itu sebabnya fungsi statis tidak memiliki penunjuk ini. Pointer suatu objek biasanya menunjuk ke objek yang sedang dikerjakannya. Karena fungsi statis tidak bekerja dengan objek, penunjuk ini tidak diperlukan.

Fungsi statis memiliki akses langsung ke anggota statis lainnya. Namun, hal ini tidak terjadi pada anggota non-statis. Alasannya adalah anggota non-statis harus menjadi bagian dari suatu objek, tetapi fungsi statis tidak memiliki objek untuk dikerjakan.

Contoh 4

Dimungkinkan untuk mendefinisikan fungsi statis di luar deklarasi kelas. Mari kita tunjukkan ini:

#include<iostream> 
using namespace std;
class NumGenerator {
private:
	static int nextNum; 
public:
	static int getNextNum();
};
int NumGenerator::nextNum = 1;
int NumGenerator::getNextNum() {
	return nextNum++; 
}
int main() {
	for (int count = 0; count < 5; ++count)
		std::cout << "The next number is: " << NumGenerator::getNextNum() << '\n';
	return 0;
}

Keluaran:

Pointer ini dalam Fungsi Statis

Berikut ini tangkapan layar kode Anda:

Pointer ini dalam Fungsi Statis

Penjelasan Kode:

  1. Menyertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
  2. Sertakan namespace std dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
  3. Buat kelas bernama NumGenerator.
  4. Dengan menggunakan pengubah akses privat untuk menandai variabel, kita akan membuatnya sebagai variabel yang dapat diakses secara privat.
  5. Buat variabel integer statis bernama nextNum.
  6. Menggunakan pengubah akses publik yang membantu Anda menandai variabel yang akan kita buat sebagai dapat diakses publik.
  7. Mendeklarasikan fungsi statis bernama getNextNum().
  8. Akhir dari badan kelas.
  9. Tetapkan variabel nextNum nilai 1. Kami telah melakukan ini menggunakan nama kelas, nama variabel, dan operator resolusi cakupan.
  10. Mendefinisikan fungsi statis getNextNum() di luar kelas.
  11. Tentukan tindakan yang akan diambil ketika fungsi di atas dipanggil/dipanggil. Ini akan menambah nilai variabel nextNum sebesar 1.
  12. Akhir dari definisi fungsi getNextNum().
  13. Memanggil fungsi main(). Itu C++ logika program harus ditambahkan dalam isi fungsi ini.
  14. Menggunakan untuk loop untuk membuat variabel bernama count. Nilai variabel ini harus bertambah dari 0 menjadi 4. Setelah setiap iterasi, nilai variabel akan bertambah 1.
  15. Mencetak nilai variabel nextNum bersama teks lain di konsol pada setiap iterasi. Nilai diakses menggunakan fungsi getNextNum().
  16. Kredensial mikro C++ program harus mengembalikan nilai setelah berhasil diselesaikan.
  17. Akhir dari fungsi main().

Ringkasan

  • C++ anggota statis adalah anggota kelas yang termasuk dalam kelas, bukan objeknya.
  • Anda hanya akan memiliki satu salinan anggota statis berapa pun jumlah objek yang Anda buat.
  • Semua objek kelas berbagi setiap anggota kelas statis.
  • Setelah mendefinisikan fungsi kelas sebagai statis, fungsi tersebut menjadi independen dari objek kelas.
  • Fungsi statis dapat diakses meskipun Anda tidak membuat objek kelas apa pun.
  • Namun, fungsi statis tidak memiliki objek ini, yang menunjuk ke objek kelas.

Ringkaslah postingan ini dengan: