[c++] namespace

寫過一些些c++, java跟 python
但是對於物件導向(Object-Orientated) 的解釋,一直說不上話

今天來複習一下...

1. 命名空間 namespace
這是一開始寫c++時都會停住的問題,就竟什麼是命名空間? 為什麼需要有命名空間?
看了網上諸多解釋後,我自己認為是由於程式越長越大時,常會有變數、函式或類別名稱
相同的情況,甚至同類別名稱又同變數名稱等,這時後容易混淆,甚至覆蓋掉先前的定義。
c++提供一個空間的概念,即在各自的空間上定義的任何變數、函式,彼此是互斥的。
使用的方式是
namespace NAME {
    // method, variable, etc.
}

ex.
#include
using namespace std;
namespace cat{
  int shout;
  int act;
}
namespace dog{
  double shout;
  double act;
}


int main(void)
{
  cat::shout = 2
  cat::act = 4
  dog::shout = 1
  dog::act = 3
  
  cout<<
  cout<<
  cin.get();


  return 0;
}

亦可寫作兩個file
ex.
cat.h
namespace cat{
   int shout;
   int act;
}

main.cpp
#include
#include "cat.h"
using namespace std;


int main(void)
{
    cat::shout = 9;
    cat::act = 2;
    cout << cat::shout + cat::act <
}

  上面要記得的是
    1. 用 '::' 來提取該範圍內的member  用法是  <命名空間名稱> :: <該空間的成員>
    2. using namespace std  這個表示c++的 standard library 命名空間,所以必須在每次寫一個    新的.cpp檔時,都需加入此行。
    3. using的用法,可以讓每次使用時,不用重複說明該成員是哪個命名空間:
         3.1    using namespace  空間名稱::成員;
         3.2   using namespace  名稱空間;
    4. 亦可定義一個未命名的namespace, 以建立一個unique member.

Comments

Popular posts from this blog

股票評價(Stock Valuation) - 股利折現模型

openwrt feed的使用

How to convert Markdown into HTML