C++责任链

#include <iostream>
using namespace std;
class Base{
    protected:
        Base *next;
        public:
            Base(Base *t){
                next=t;
            }
            Base(){
            next=NULL;
            }
            virtual void fun(){
            if(next)    next->fun();
            }
            virtual ~Base(){}
};
class A1:public Base{
    public:
        A1(Base *t):Base(t){
        }
        A1(){
        }
        void fun(){
            cout<<"a1"<<endl;
            Base::fun();
        }
};

class A2:public Base{
    public:
        A2(Base *t):Base(t){
        };
        A2(){
        }
        void fun(){
            cout<<"a2"<<endl;
            Base::fun();
        }
};

class A3:public Base{
    public:
        A3(Base *t):Base(t){

        }
        A3(){
        }
        void fun(){
            cout<<"a3"<<endl;
            Base::fun();
        }
};
int main(void)
{
    A3 *pb3=(A3 *)new A3();
    A2 *pb2=(A2 *)new A2(pb3);
    A1 *pb1=(A1 *)new A1(pb2);
    pb1->fun();
    return 0;
}
posted @   机智的程序员小熊  阅读(176)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示