#include "stdafx.h" #include<iostream> #include<iomanip> using namespace std; //-----------------------------普通类继承模板类-------------------------------------- template<class T> class A { public: T a; A() { cout << "Construct A" << endl; } }; class B : public A<int> { public : B() { a = 111; cout << "Construct B" << endl; } }; //-----------------------------模板类继承了普通类-------------------------------------- class A1 { public: int a; A1() { cout << "Construct A1" << endl; } }; template<class T> class B1 : public A1 { public: T b; B1() { a = 222; cout << "Construct B1" << endl; } }; //-----------------------------类模板继承类模板-------------------------------------- template<class T> class A2 { public : T a; A2() { a = 100; cout << "Construct A2" << endl; } }; template<class T1, class T2> class B2 :public A2<T1> { public : T2 b; B2() { cout << "Construct B2" << endl; } }; //-----------------------------类模板继承类模板, 但是T为模板类-------------------------------------- template<typename T, int t> class A3{ public: T a; A3() :a(t) { cout << "Construct A3" << endl; } }; template<typename T> class B3 :public T { //继承T public: B3() :T() { cout << "Construct B3" << endl; } }; int main() { B b; cout << b.a << endl; B1<int> b1; cout << b1.a << endl; B2<int,float> b2; cout << b2.a << endl; B3< A3<int, 333> > b3; // 模板类作为基类 cout << b3.a << endl; }
转载请注明原文地址: https://www.6miu.com/read-2958.html