雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C++編程中__if_exists與__if_not_exists語句的用法

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊:

__if_exists 語句
__if_exists 語句測(cè)試指定的標(biāo)識(shí)符是否存在。如果該標(biāo)識(shí)符存在,則執(zhí)行指定的語句塊。
語法

__if_exists ( identifier ) { 
statements
};

參數(shù)

參數(shù) 說明
identifier 要測(cè)試其存在性的標(biāo)識(shí)符。
statements identifier 存在時(shí)要執(zhí)行的一個(gè)或多個(gè)語句。

備注
若要實(shí)現(xiàn)最可靠的結(jié)果,請(qǐng)?jiān)谝韵录s束條件下使用 __if_exists 語句。
只將 __if_exists 語句應(yīng)用于簡(jiǎn)單類型,而不是模板。
將 __if_exists 語句應(yīng)用于類的內(nèi)部或外部的標(biāo)識(shí)符。請(qǐng)勿將 __if_exists 語句應(yīng)用于局部變量。
請(qǐng)僅在函數(shù)的主體中使用該 __if_exists 語句。在函數(shù)主體外部,__if_exists 語句僅能測(cè)試完全定義的類型。
在測(cè)試重載函數(shù)時(shí),不能測(cè)試特定形式的重載。
__if_exists 語句的補(bǔ)集是 __if_not_exists 語句。
請(qǐng)注意,此示例使用了模板,不建議這樣做。

// 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 語句測(cè)試指定的標(biāo)識(shí)符是否存在。如果該標(biāo)識(shí)符不存在,則執(zhí)行指定的語句塊。
語法

__if_not_exists ( identifier ) { 
statements
};

參數(shù)

參數(shù) 說明
identifier 要測(cè)試其存在性的標(biāo)識(shí)符。
statements identifier 不存在時(shí)要執(zhí)行的一個(gè)或多個(gè)語句。

備注
若要實(shí)現(xiàn)最可靠的結(jié)果,請(qǐng)?jiān)谝韵录s束條件下使用 __if_not_exists 語句。
只將 __if_not_exists 語句應(yīng)用于簡(jiǎn)單類型而不是模板。
將 __if_not_exists 語句應(yīng)用于類的內(nèi)部或外部的標(biāo)識(shí)符。不要將 __if_not_exists 語句應(yīng)用于局部變量。
僅在函數(shù)的主體中使用 __if_not_exists 語句。在函數(shù)主體的外部,__if_not_exists 語句僅能測(cè)試完全定義的類型。
在測(cè)試重載函數(shù)時(shí),不能測(cè)試特定形式的重載。
__if_not_exists 語句的補(bǔ)集為 __if_exists 語句。

上一篇:C++運(yùn)行時(shí)獲取類型信息的type_info類與bad_typeid異常

欄    目:C語言

下一篇:解析C++編程中的bad_cast異常

本文標(biāo)題:C++編程中__if_exists與__if_not_exists語句的用法

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/2562.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有