// '.h' file: template <typename T> class X { public: virtual bool a() const = 0; virtual void b(const T&) = 0; virtual T c(); virtual void d() = 0; static void E(); int zero_or_one() const; }; template <typename T> int X<T>::zero_or_one() const {return 0;} template <typename T> class Y : X<T> { public: bool a() const; virtual void b(const T&); T c(); int zero_or_one() const; }; template <typename T> int X<T>::zero_or_one() const {return 1;}
X
class is abstract?Y
class is polymorphic?Y
class is abstract?b
function is abstract inX
?b
function is abstract inY
?c
function is abstract inX
?c
function is polymorphic inY
?d
function is polymorphic inX
?d
function is abstract inY
?E
function is a class function forX
?E
function is a class function forY
?zero_or_one
function is polymorphic inX
?zero_or_one
function is redefined inY
?