이 기사에서는 C++ STL에서 std::is_polymorphic 템플릿의 작동, 구문 및 예에 대해 논의할 것입니다.
is_polymorphic은 C++의
다형성 클래스란 무엇입니까?
가상 함수가 선언된 추상 클래스에서 가상 함수를 선언하는 클래스입니다. 이 클래스는 다른 클래스에서 선언된 가상 함수의 선언을 가지고 있습니다.
구문
template <class T> is_polymorphic;
매개변수
템플릿은 T 유형의 매개변수만 가질 수 있으며 주어진 유형이 다형성 클래스인지 여부를 확인합니다.
반환 값
Boolean 값을 반환하고, 주어진 유형이 다형성 클래스이면 true, 주어진 유형이 다형성 클래스가 아니면 false를 반환합니다.
예시
Input: class B { virtual void fn(){} };
class C : B {};
is_polymorphic<B>::value;
Output: True
Input: class A {};
is_polymorphic<A>::value;
Output: False 예시
#include <iostream>
#include <type_traits>
using namespace std;
struct TP {
virtual void display();
};
struct TP_2 : TP {
};
class TP_3 {
virtual void display() = 0;
};
struct TP_4 : TP_3 {
};
int main() {
cout << boolalpha;
cout << "Checking for is_polymorphic: ";
cout << "\n structure TP with one virtual function : "<<is_polymorphic<TP>::value;
cout << "\n structure TP_2 inherited from TP: "<<is_polymorphic<TP_2>::value;
cout << "\n class TP_3 with one virtual function: "<<is_polymorphic<TP_3>::value;
cout << "\n class TP_4 inherited from TP_3: "<< is_polymorphic<TP_4>::value;
return 0;
} 출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Checking for is_polymorphic: structure TP with one virtual function : true structure TP_2 inherited from TP: true class TP_3 with one virtual function: true class TP_4 inherited from TP_3: true
예시
#include <iostream>
#include <type_traits>
using namespace std;
struct TP {
int var;
};
struct TP_2 {
virtual void display();
};
class TP_3: TP_2 {
};
int main() {
cout << boolalpha;
cout << "Checking for is_polymorphic: ";
cout << "\n structure TP with one variable : "<<is_polymorphic<TP>::value;
cout << "\n structure TP_2 with one virtual function : "<<is_polymorphic<TP_2>::value;
cout << "\n class TP_3 inherited from structure TP_2: "<<is_polymorphic<TP_3>::value;
return 0;
} 출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Checking for is_polymorphic: structure TP with one variable : false structure TP_2 with one virtual function : true class TP_3 inherited from structure TP_2 : true