有人可以解释一下,为什么这段代码不需要函数定义吗?

时间:2019-07-06 07:55:33

标签: c++ oop templates

是一本解决不同问题的书。并且得到了下一件事。有一个问题,关于如何使用模板检查类是否从另一类派生。还有一个有关在编译时如何执行此操作的示例。我很想知道为什么这段代码不需要静态函数的定义。

template<typename T, typename B>
class CIsDerived
{
private:
    class CIsValid
    {
    };

    class CIsInValid
    {
        int sizeExp[3];
    };

    static CIsValid Check(B * pBaseClass);
    static CIsInValid Check(...);

public:
    enum
    {
        Is = sizeof(CIsValid) == sizeof(Check(static_cast<T*>(0)))
    };
};

class CBase
{
    public:
};

class CDerv : public CBase
{
public:

};

void main()
{
    cout << CIsDerived<CDerv, CBase>::Is << endl;
    cout << CIsDerived<string, CBase>::Is << endl;
}

有人可以提供任何书籍吗,这件事被深入解释了吗?

0 个答案:

没有答案