HelloWorld开发者社区

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

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  78 随笔 :: 0 文章 :: 13 评论 :: 50061 阅读
复制代码
#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   HelloWorld开发者社区  阅读(543)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示