C++类的静态数据成员和静态成员函数
静态数据成员
·用关键字static声明
·当声明类的数据成员为静态时,无论创建多少个类的对象,静态成员都只有一个副本
·在类的所有对象中共享,具有静态生存期
·若不存在其他的初始化语句,在创建第一个对象时,所有的静态数据成员被初始化为零
·在类外定义和初始化,用范围解析运算符(::)来指明所属的类
举例:
#include <iostream> using namespace std; class Box { public: static int count; //若该静态数据成员在private部分声明,则只能通过静态成员函数处理 Box(double l = 2.0, double b = 2.0, double h = 2.0) { cout << "One constructor was called." << endl; length = l, width = b, height = h; count++; //每创建一个对象时加1 } double Volume() { return length * width * height; } ~Box() { count--; } private: double length, width, height; }; //初始化类Box的静态成员 int Box::count = 0; int main(void) { Box Box1(3.3, 1.2, 1.5); Box Box2(8.5, 6.0, 2.0); cout << "Total objects: " << Box::count << endl; //输出对象的总数 return 0; }
静态成员函数
把成员函数声明为静态的,就可以把函数与类的任何特定对象独立开来
·在类对象不存在的情况下也能被调用,使用类名加范围解析运算符 :: 即可访问
·静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数
·静态成员函数有一个类范围,不能访问类的 this 指针,可以使用静态成员函数来判断类的某些对象是否已被创建
·用静态成员函数访问非静态成员,需通过对象
举例:
#include <iostream> using namespace std; class Box { public: static int count; Box(double l = 2.0, double b = 2.0, double h = 2.0) { cout <<"One constructor was called." << endl; length = l, width = b, height = h; count++; } double Volume() { return length * width * height; } static int getCount() { //静态成员函数 return count; } private: double length, width, height; }; int Box::count = 0; int main(void) { //在创建对象之前输出对象的总数 cout << "Inital Stage Count: " << Box::getCount() << endl; Box Box1(3.3, 1.2, 1.5); Box Box2(8.5, 6.0, 2.0); //在创建对象之后输出对象的总数 cout << "Final Stage Count: " << Box::getCount() << endl; return 0; }
注:
静态成员函数与普通成员函数的区别:
·静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)
·普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针
使用静态成员了解构造与析构函数的调用情况
#include <iostream> using namespace std; class A { friend class B; //类B是类A的友元 public: static int value; static int num; A(int x, int y) { xp = x, yp = y; value++; cout << "调用构造:" << value << endl; } void displayA() { cout << xp << "," << yp << endl; } ~A() { num++; cout << "调用析构:" << num << endl; } private: int xp, yp; }; class B { public: B(int x1, int x2) : mpt1(x1 + 2, x2 - 2), mpt2(x1, x2) { cout << "调用构造\n"; //mpt是类A的对象,有几个mpt,有关类A的操作便执行几次 } void set(int m, int n); void displayB(); ~B() { cout << "调用析构\n"; //析构函数在类结束前调用,类结束的时候释放类申请的空间 } private: A mpt1, mpt2; //将A类的对象声明为B类的私有数据成员 }; int A::value = 0; int A::num = 0; void B::set(int m, int n) { mpt1.xp = m * 2, mpt1.yp = n / 2; } void B::displayB() { mpt1.displayA(); } int main() { B p(10, 20); cout << "Hello world!" << endl; B displayB(); //通过友元,使类B输出类A的私有数据成员 return 0; }
相关文章:
Atas ialah kandungan terperinci C++类的静态数据成员和静态成员函数. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pemalar juga dipanggil pembolehubah dan apabila ditakrifkan, nilainya tidak berubah semasa pelaksanaan program. Oleh itu, kita boleh mengisytiharkan pembolehubah sebagai pemalar merujuk nilai tetap. Ia juga dipanggil teks. Pemalar mesti ditakrifkan menggunakan kata kunci Const. Sintaks Sintaks pemalar yang digunakan dalam bahasa pengaturcaraan C adalah seperti berikut - consttypeVariableName; ,34, 4567 Pemalar titik terapung - Contoh: 0.0, 156.89, 23.456 Pemalar perlapanan dan Perenambelasan - Contoh: Hex: 0x2a, 0xaa.. Octal

Kod VS dan Visual Studio C++ IntelliSense mungkin tidak dapat mengambil perpustakaan, terutamanya apabila bekerja pada projek besar. Apabila kami menuding pada #Include<wx/wx.h>, kami melihat mesej ralat "Tidak boleh Membuka fail sumber 'string.h'" (bergantung pada "wx/wx.h") dan kadangkala, Fungsi autolengkap tidak bertindak balas. Dalam artikel ini kita akan melihat perkara yang boleh anda lakukan jika VSCode dan VSC++ IntelliSense tidak berfungsi atau mengekstrak perpustakaan. Mengapa Intellisense saya tidak berfungsi dalam C++? Apabila bekerja dengan fail besar, kadangkala IntelliSense

Adakah anda tidak dapat membeli atau menonton kandungan pada Xbox anda kerana kod ralat 8C230002? Sesetengah pengguna terus mendapat ralat ini apabila cuba membeli atau menonton kandungan pada konsol mereka. Maaf, terdapat masalah dengan perkhidmatan Xbox. Cuba lagi nanti. Untuk bantuan dengan isu ini, lawati www.xbox.com/errorhelp. Kod Status: 8C230002 Kod ralat ini biasanya disebabkan oleh masalah pelayan atau rangkaian sementara. Walau bagaimanapun, mungkin terdapat sebab lain, seperti tetapan privasi akaun anda atau kawalan ibu bapa, yang mungkin menghalang anda daripada membeli atau melihat kandungan tertentu. Betulkan Kod Ralat Xbox 8C230002 Jika anda menerima kod ralat 8C semasa cuba menonton atau membeli kandungan pada konsol Xbox anda

Kami mengambil tatasusunan integer Arr[] sebagai input. Matlamatnya adalah untuk mencari elemen terbesar dan terkecil dalam tatasusunan menggunakan kaedah rekursif. Memandangkan kami menggunakan rekursi, kami akan mengulangi keseluruhan tatasusunan sehingga kami mencapai panjang = 1 dan kemudian mengembalikan A[0], yang membentuk huruf asas. Jika tidak, elemen semasa dibandingkan dengan nilai minimum atau maksimum semasa dan nilainya dikemas kini secara rekursif untuk elemen berikutnya. Mari kita lihat pelbagai senario input dan output untuk −Input −Arr={12,67,99,76,32}; Nilai maksimum dalam tatasusunan: 99 Penjelasan &mi

Menurut berita pada 25 Mei, China Eastern Airlines mendedahkan perkembangan terkini pesawat penumpang C919 pada mesyuarat taklimat prestasi. Menurut syarikat itu, perjanjian pembelian C919 yang ditandatangani dengan COMAC telah berkuat kuasa secara rasmi pada Mac 2021, dan pesawat C919 pertama telah dihantar menjelang akhir 2022. Dijangkakan pesawat itu akan mula beroperasi secara rasmi tidak lama lagi. China Eastern Airlines akan menggunakan Shanghai sebagai pangkalan utamanya untuk operasi komersial C919, dan merancang untuk memperkenalkan sejumlah lima pesawat penumpang C919 pada 2022 dan 2023. Syarikat itu menyatakan bahawa rancangan pengenalan masa depan akan ditentukan berdasarkan keadaan operasi sebenar dan perancangan rangkaian laluan. Menurut pemahaman editor, C919 ialah pesawat penumpang satu lorong utama generasi baharu China dengan hak harta intelek bebas sepenuhnya di dunia, dan ia mematuhi piawaian kelayakan udara yang diterima di peringkat antarabangsa. sepatutnya

Memaparkan nombor dalam format yang berbeza adalah salah satu masalah pengekodan asas pembelajaran. Konsep pengekodan yang berbeza seperti pernyataan bersyarat dan pernyataan gelung. Terdapat program yang berbeza di mana kami menggunakan aksara khas seperti asterisk untuk mencetak segi tiga atau segi empat sama. Dalam artikel ini, kami akan mencetak nombor dalam bentuk lingkaran, sama seperti petak dalam C++. Kami mengambil bilangan baris n sebagai input dan bermula dari sudut kiri atas dan bergerak ke kanan, kemudian ke bawah, kemudian ke kiri, kemudian ke atas, kemudian ke kanan lagi, dan seterusnya dan seterusnya. Corak lingkaran dengan nombor 123456724252627282982340414243309223948494431102138474645321120373635343312191817161514

void dalam C ialah kata kunci khas yang digunakan untuk mewakili jenis kosong, yang bermaksud data tanpa jenis tertentu. Dalam bahasa C, void biasanya digunakan dalam tiga aspek berikut. Jenis pulangan fungsi adalah tidak sah Dalam bahasa C, fungsi boleh mempunyai jenis pulangan yang berbeza, seperti int, float, char, dll. Walau bagaimanapun, jika fungsi tidak mengembalikan sebarang nilai, jenis pulangan boleh ditetapkan kepada batal. Ini bermakna bahawa selepas fungsi itu dilaksanakan, ia tidak mengembalikan nilai tertentu. Contohnya: voidhelloWorld()

Menurut Indeks Komuniti Pengaturcaraan TIOBE, salah satu penanda aras untuk mengukur populariti bahasa pengaturcaraan, ia dinilai dengan mengumpul data daripada jurutera, kursus, vendor dan enjin carian di seluruh dunia. Indeks TIOBE pada Januari 2024 telah dikeluarkan baru-baru ini, dan kedudukan bahasa pengaturcaraan rasmi untuk 2023 telah diumumkan memenangi Bahasa Pengaturcaraan TIOBE 2023 Ini adalah kali pertama C# memenangi penghormatan ini dalam tempoh 23 tahun. Siaran akhbar rasmi TIOBE menyatakan bahawa C# telah berada dalam 10 teratas selama lebih daripada 20 tahun Kini ia mengejar empat bahasa utama dan telah menjadi bahasa pengaturcaraan dengan pertumbuhan terbesar dalam satu tahun (+1.43%). Memang layak untuk memenangi anugerah ini. Kedudukan kedua ialah Scratch (+0.83%) dan Fortran (+0
