程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++面向對象學習-類的靜態成員,面向對象靜態

C++面向對象學習-類的靜態成員,面向對象靜態

編輯:C++入門知識

C++面向對象學習-類的靜態成員,面向對象靜態


 1    靜態數據成員
 2 1,sizeof 運算符不會計算靜態成員。
 3 
 4 2,對靜態成員數據初始化的順序為它們在類體外聲明的順序。
 5 
 6 3,靜態數據成員被類的所有對象所共享,包括該類的派生類對象。
 7 
 8 4,靜態成員數據也可以分為公有的、私有的和受保護的靜態成員。
 9 對公有靜態成員,即可以通過類的對象進行訪問,也可以通過類名直接訪問。
10 私有的和保護的靜態成員數據則只能被該類的公有成員函數訪問。
11 
12 5,在創建任何對象之前,類的靜態成員數據已經存在並可以引用。
13 
14 6,靜態數據成員的類型可以是所屬類的類型,非靜態數據成員則不可以。
15 class Student{
16     public:
17         static Student stu1;  //靜態數據成員,屬於整個類,內存只有一份
18         Student stu2;         //error
19         Student *pstu;        //指針
20         Student &rstu;        //引用
21 };
22 Student::stu1::stu1::stu1::...::stu1等價於Student::stu1。
23 靜態數據成員是自定義數據類型時的初始化
24 class A{
25     public:
26         A(int);
27 };
28 class B{
29     private:
30         static A a;
31 };
32 A B::a(2);
33 
34 
35    靜態成員函數
36 1,靜態數據成員和靜態成員函數都屬於整個類,而不是某個具體對象。在程序開始運行時就為靜態成員數據分配存儲空間。
37 所以,對靜態成員函數的引用不需要對象名(需引用類名)。
38 class Student{
39     public:
40         static func();
41 };
42 
43 int main(){
44     Student::func();   //here!
45     return 0;
46 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved