HelloWorld开发者社区

www.helloworld.net - 开发者专属的技术社区

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
#include <iostream>
using namespace std;

template<typename T>
class Phone
{
public:
    void show()
    {
        T* pThis = static_cast<T*>(this);
        pThis->printName();
    }
public:
    void printName(){    cout<<"Phone ... "<<endl;  }
};

class Nokia : public Phone<Nokia>
{
public:
    void printName(){  cout<<"Nokia Phone ... "<<endl;   }
};
class Samang:public Phone<Samang>
{
public:
    void printName(){   cout<<"Samang Phone ... "<<endl;   }
};
class UnknowPhone:public Phone<UnknowPhone>
{
};

int main()
{
    Nokia nokia;
    Samang samang;
    UnknowPhone unPhone;

    nokia.show();
    samang.show();
    unPhone.show();
}

输出结果如下:

 

Nokia Phone ...
Samang Phone ...
Phone ...
请按任意键继续. . .

posted on 2013-12-29 18:40  HelloWorld开发者社区  阅读(538)  评论(0编辑  收藏  举报