搜尋此網誌

2011年7月16日 星期六

C++ Namespace(命名空間)用法

c++的namespace和Java的package有異曲同工之妙,也就是說宣告在不同namespace的function.即便擁有同樣的名字也不會衝突到,可獨立使用.
以下是範例程式:
#include <iostream>
using namespace std;

namespace MyException {
class Exception {
public:
void mesg() {
cout << "Exception Occurred !!"<<endl;
}
};
}


void sum2(int, int) throw (MyException::Exception);
int main() {
int a=1;
int b=1;
try {
sum2(a, b);
} catch (MyException::Exception & ex) {// start of exception handler
ex.mesg();
}
return 0;
}

void sum2(int a, int b) throw (MyException::Exception) {
if (a==b) {
throw MyException::Exception();
}
cout << a+b<<"\n";
}




解說:
先命名一個namespace為MyException的block,然後在block內定義一個Exception類別,接下來使用"命名空間::類別名稱"來使用此類別


也可以使用兩個namespace的方式來更進一步減少name collision,不過在使用的時候要記得存取每一層namespace的名字,compile才有辦法正確找到要使用的類別.


namespace MyException {
namespace SecondLevel {
class Exception {
public:
void mesg() {
cout << "Exception Occurred !!"<<endl;
}
};
}
}

沒有留言:

張貼留言