精品熟女碰碰人人a久久,多姿,欧美欧美a v日韩中文字幕,日本福利片秋霞国产午夜,欧美成人禁片在线观看

C++ 類的靜態成員

c++ 類的靜態成員

c++ 類和對象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

 

1. 靜態函數成員

如果把函數成員聲明為靜態的,就可以把函數與類的任何特定對象獨立開來。靜態成員函數即使在類對象不存在的情況下也能被調用,靜態函數只要使用類名加范圍解析運算符 :: 就可以訪問。

靜態成員函數只能訪問靜態數據成員,不能訪問其他靜態成員函數和類外部的其他函數。

靜態成員函數有一個類范圍,他們不能訪問類的 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

c++ 類和對象c++ 類和對象

下一節:c++ 繼承

c++ 簡介

相關文章
C++基礎