[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
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.
但是對於物件導向(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 = 3cout<
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
Post a Comment