祁宇,祁大神的访问者模式
好代码,共享,大家看.更详细的在此
#包含<io流>
元<型名 T>构 访问者{虚 空 访问(T*)=0;};
构 访问者令牌{虚~访问者令牌()=默认;};
构 动物{
虚 整 移动()=0;
虚 空 接受(访问者令牌*)=0;
虚~动物()=默认;
};
元<型名 T>
构 可访问:公 动物{
空 接受(访问者令牌*v)盖{
动转<访问者<T>*>(v)->访问(静转<T*>(本));
}
};
构 狗:公 可访问<狗>{
整 移动()盖{中 4;}
空 游泳(){输出<<"游泳"<<行尾;}
};
构 鸟:公 可访问<鸟>{
整 移动()盖{中 2;}
空 飞(){输出<<"飞"<<行尾;}
};
构 鱼:公 可访问<鱼>{
整 移动()盖{中 1;}
空 潜水(){输出<<"潜水"<<行尾;}
};
元<类...T>
构 多访问者:公 访问者令牌,公 访问者<T>... {
用 访问者<T>::访问...;
};
用 我的访问者=多访问者<狗,鸟>;
用 我的访问者1=多访问者<鱼>;
构 访问者实现:公 我的访问者{
空 访问(狗*d)盖{d->游泳();}
空 访问(鸟*b)盖{b->飞();}
};
构 访问者实现1:公 我的访问者1{
空 访问(鱼*f)盖{f->潜水();}
};
整 主(){
动物*a=新 狗;访问者令牌*v=新 访问者实现;
a->接受(v);动物*b=新 鸟;b->接受(v);
访问者令牌*v1=新 访问者实现1;
动物*c=新 鱼;c->接受(v1);
}
这个访问者模式
最早是在AA
大神(c++设计新思维–泛型编程与设计模式)里面的第10章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现