C++編程中__if_exists與__if_not_exists語句的用法
__if_exists 語句
__if_exists 語句測試指定的標(biāo)識符是否存在。如果該標(biāo)識符存在,則執(zhí)行指定的語句塊。
語法
__if_exists ( identifier ) { statements };
參數(shù)
參數(shù) | 說明 |
---|---|
identifier | 要測試其存在性的標(biāo)識符。 |
statements | identifier 存在時要執(zhí)行的一個或多個語句。 |
備注
若要實現(xiàn)最可靠的結(jié)果,請在以下約束條件下使用 __if_exists 語句。
只將 __if_exists 語句應(yīng)用于簡單類型,而不是模板。
將 __if_exists 語句應(yīng)用于類的內(nèi)部或外部的標(biāo)識符。請勿將 __if_exists 語句應(yīng)用于局部變量。
請僅在函數(shù)的主體中使用該 __if_exists 語句。在函數(shù)主體外部,__if_exists 語句僅能測試完全定義的類型。
在測試重載函數(shù)時,不能測試特定形式的重載。
__if_exists 語句的補(bǔ)集是 __if_not_exists 語句。
請注意,此示例使用了模板,不建議這樣做。
// the__if_exists_statement.cpp // compile with: /EHsc #include <iostream> template<typename T> class X : public T { public: void Dump() { std::cout << "In X<T>::Dump()" << std::endl; __if_exists(T::Dump) { T::Dump(); } __if_not_exists(T::Dump) { std::cout << "T::Dump does not exist" << std::endl; } } }; class A { public: void Dump() { std::cout << "In A::Dump()" << std::endl; } }; class B {}; bool g_bFlag = true; class C { public: void f(int); void f(double); }; int main() { X<A> x1; X<B> x2; x1.Dump(); x2.Dump(); __if_exists(::g_bFlag) { std::cout << "g_bFlag = " << g_bFlag << std::endl; } __if_exists(C::f) { std::cout << "C::f exists" << std::endl; } return 0; }
Output
In X<T>::Dump() In A::Dump() In X<T>::Dump() T::Dump does not exist g_bFlag = 1 C::f exists
__if_not_exists 語句
__if_not_exists 語句測試指定的標(biāo)識符是否存在。如果該標(biāo)識符不存在,則執(zhí)行指定的語句塊。
語法
__if_not_exists ( identifier ) { statements };
參數(shù)
參數(shù) | 說明 |
---|---|
identifier | 要測試其存在性的標(biāo)識符。 |
statements | identifier 不存在時要執(zhí)行的一個或多個語句。 |
備注
若要實現(xiàn)最可靠的結(jié)果,請在以下約束條件下使用 __if_not_exists 語句。
只將 __if_not_exists 語句應(yīng)用于簡單類型而不是模板。
將 __if_not_exists 語句應(yīng)用于類的內(nèi)部或外部的標(biāo)識符。不要將 __if_not_exists 語句應(yīng)用于局部變量。
僅在函數(shù)的主體中使用 __if_not_exists 語句。在函數(shù)主體的外部,__if_not_exists 語句僅能測試完全定義的類型。
在測試重載函數(shù)時,不能測試特定形式的重載。
__if_not_exists 語句的補(bǔ)集為 __if_exists 語句。
上一篇:C++運(yùn)行時獲取類型信息的type_info類與bad_typeid異常
欄 目:C語言
本文標(biāo)題:C++編程中__if_exists與__if_not_exists語句的用法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2562.html
您可能感興趣的文章
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10APUE筆記之:進(jìn)程環(huán)境詳解
- 01-10c++中inline的用法分析
- 01-10如何尋找數(shù)組中的第二大數(shù)


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10C#中split用法實例總結(jié)
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文