2020年6月24日 星期三

函數中的靜態變數

函數中的靜態變數只在第一次呼叫這個函數才會建立,之後不管呼叫幾次都用的都是同一個,包括成員函數也一樣。如以下的範例:
 
#include <iostream>

using namespace std;

class A
{
  int m_v;
public:
  // Constructor
  A(int v)
  {
    m_v = v;
  }

  void Show()
  {
    cout << "數值:" << m_v << endl;
  }
};

class B
{
public:
  // Constructor
  B()
  {}

  void Show(int v)
  {
    static A a(v); // 函數中的靜態變數
    a.Show();
  }
};


int main()
{
  B b1;
  B b2;

  b1.Show(1); // 第一次執行會設定靜態變數,往後用的都是同一個
  b1.Show(11);

  b2.Show(2);
  b2.Show(22);

  return 0;
}




沒有留言:

張貼留言