在一個namespace中,我們也可以用一個別名指代現(xiàn)有的namespace或是一些其他類型數(shù)據(jù)。
別名的使用格式如下:
using 別名 = 一個已經(jīng)存在的類型;
例如:using soholife = system;
下面我們通過幾個例子來加深一下理解:
namespace n1.n2
{
class a {}
}
namespace n3
{
using a = n1.n2.a;
class b: a {}
}
這里,在n3中,a是n1.n2.a的別名,而n3.b則繼承于n1.n2.a!同樣的我們也可以用下面的方式來取得同樣的效果:
namespace n3
{
using r = n1.n2;
class b: r.a {}
}
說道這里,我想提個問題,先看下面的例子:
namespace n1.n2
{
class a {}
}
namespace n3
{
class a {}
}
namespace n3
{
using a = n1.n2.a;
}
如果我們這樣寫,會有問題嗎?
答案當(dāng)然是肯定的了,錯!因?yàn)橐粋€別名必須是在namespace中唯一的,而上面由于已經(jīng)有了
class a{},我們在用using a =n1.ne.a;就所以肯定要出錯了!不過如果我們該成:
using b =n1.n2.a;那么結(jié)果如何呢?朋友門自己想想吧!我就不多說了!
本來以為可以結(jié)束了,突然發(fā)現(xiàn)還有一個地方還沒有說清楚,可以說是就沒有說,呵呵,看來只能晚些回家了,我門還是從問題看起吧:
namespace n1.n2
{
class a {}
}
namespace n3
{
using r = n1.n2;
}
namespace n3
{
class b: r.a {}
}
上面的例子中,不知道大家覺得如何,正確?錯誤?
如果我來回答的話,錯!(呵呵,以前做選擇題養(yǎng)成的習(xí)慣,凡是這樣問的答案就是錯!不過原因是說不出來的了!)
真的上面這個程序,先開始看我也以為是正確的,后來才知道。。。,唉,看來還是要多看書的!
原來在一個分開的單元中使用別名的時候,別名只是在它所在的單元中(namespace或其它)可以使用,而在其他單元中是不能夠用的,所以上面的那個例子中,在第二個n3中使用r的時候,會提示r未知!當(dāng)然了,如果我們想使用這樣的方式,我們還是有辦法的,就是把別名r寫到n3的外面:如下
using r = n1.n2;
namespace n3
{
class b: r.a {}
}
好了說了這么多,如果能全部理解的話,我想應(yīng)該能適當(dāng)?shù)膶amespace有一些概念了!如果能這樣的話,我的目的也達(dá)到了!
新聞熱點(diǎn)
疑難解答
圖片精選