当前位置: 首页>>代码示例>>用法及示例精选>>正文


C++ std::is_base_of模板用法及代码示例

<type_traits>头文件中提供了C++ STL的std::is_base_of模板。 C++ STL的std::is_base_of模板用于检查Base类是否为Derived类的基类。根据上述条件,它返回布尔值true或false。

头文件:

#include<type_traits>

模板类别:

template <class Base, class Derived>
struct is_base_of;

用法:

std::is_base_of<A, B>::value

参数:它接受以下两个类作为参数:



  • A类(作为基类):它代表基类。
  • B类(作为派生类):它代表派生类。

返回值:该模板返回一个布尔变量,如下所示:

  • True:如果基类(类A)是派生类(类B)的父级。
  • False:如果基类(类A)不是派生类(类B)的父级。

以下示例程序旨在说明C /C++中的std::is_base_of模板:

程序1:

// C++ program to demonstrate the 
// std::is_base_of templates 
#include <bits/stdc++.h> 
#include <type_traits> 
using namespace std; 
  
// Base class A 
class A { 
}; 
  
// Derived Class B 
class B:A { 
}; 
  
// Class C 
class C { 
}; 
  
// Driver Code 
int main() 
{ 
  
    cout << boolalpha; 
  
    // Check if class A is a base class 
    // of class B 
    cout << "A is base class of B:"
         << is_base_of<A, B>::value 
         << endl; 
  
    // Check if class B is a base class 
    // of class A 
    cout << "B is base class of A:"
         << is_base_of<B, A>::value 
         << endl; 
  
    // Check if class C is a base class 
    // of class B 
    cout << "C is base class of B:"
         << is_base_of<C, B>::value 
         << endl; 
  
    // Check if class C is a base class 
    // of class C 
    cout << "C is base class of C:"
         << is_base_of<C, C>::value 
         << endl; 
  
    return 0; 
}
输出:
A is base class of B:true
B is base class of A:false
C is base class of B:false
C is base class of C:true

参考: http://www.cplusplus.com/reference/type_traits/is_base_of/




相关用法

注:本文由纯净天空筛选整理自bansal_rtk_大神的英文原创作品 std::is_base_of template in C++ with Examples。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。