<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # C++ 類的靜態成員 我們可以使用 **static** 關鍵字來把類成員定義為靜態的。當我們聲明類的成員為靜態時,這意味著無論創建多少個類的對象,靜態成員都只有一個副本。 靜態成員在類的所有對象中是共享的。如果不存在其他的初始化語句,在創建第一個對象時,所有的靜態數據都會被初始化為零。我們不能把靜態成員放置在類的定義中,但是可以在類的外部通過使用范圍解析運算符 **::** 來重新聲明靜態變量從而對它進行初始化,如下面的實例所示。 下面的實例有助于更好地理解靜態數據成員的概念: ``` #include <iostream> using namespace std; class Box { public: static int objectCount; // 構造函數定義 Box(double l=2.0, double b=2.0, double h=2.0) { cout <<"Constructor called." << endl; length = l; breadth = b; height = h; // 每次創建對象時增加 1 objectCount++; } double Volume() { return length * breadth * height; } private: double length; // 長度 double breadth; // 寬度 double height; // 高度 }; // 初始化類 Box 的靜態成員 int Box::objectCount = 0; int main(void) { Box Box1(3.3, 1.2, 1.5); // 聲明 box1 Box Box2(8.5, 6.0, 2.0); // 聲明 box2 // 輸出對象的總數 cout << "Total objects: " << Box::objectCount << endl; return 0; } ``` 當上面的代碼被編譯和執行時,它會產生下列結果: ``` Constructor called. Constructor called. Total objects: 2 ``` ## 靜態函數成員 如果把函數成員聲明為靜態的,就可以把函數與類的任何特定對象獨立開來。靜態成員函數即使在類對象不存在的情況下也能被調用,**靜態函數**只要使用類名加范圍解析運算符 **::** 就可以訪問。 靜態成員函數只能訪問靜態數據成員,不能訪問其他靜態成員函數和類外部的其他函數。 靜態成員函數有一個類范圍,他們不能訪問類的 this 指針。您可以使用靜態成員函數來判斷類的某些對象是否已被創建。 下面的實例有助于更好地理解靜態函數成員的概念: ``` #include <iostream> using namespace std; class Box { public: static int objectCount; // 構造函數定義 Box(double l=2.0, double b=2.0, double h=2.0) { cout <<"Constructor called." << endl; length = l; breadth = b; height = h; // 每次創建對象時增加 1 objectCount++; } double Volume() { return length * breadth * height; } static int getCount() { return objectCount; } private: double length; // 長度 double breadth; // 寬度 double height; // 高度 }; // 初始化類 Box 的靜態成員 int Box::objectCount = 0; int main(void) { // 在創建對象之前輸出對象的總數 cout << "Inital Stage Count: " << Box::getCount() << endl; Box Box1(3.3, 1.2, 1.5); // 聲明 box1 Box Box2(8.5, 6.0, 2.0); // 聲明 box2 // 在創建對象之后輸出對象的總數 cout << "Final Stage Count: " << Box::getCount() << endl; return 0; } ``` 當上面的代碼被編譯和執行時,它會產生下列結果: ``` Inital Stage Count: 0 Constructor called. Constructor called. Final Stage Count: 2 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看