使用场景:在不能根据类创建对象的时候,根据已有的对象创建对象

不能根据类创建对象的情况:

  • 创建一个类的对象时,需要根据多种对象来创建,创建的过程非常复杂
  • 难以根据类生成对象

例子:

class Product
{
public:
virtual Product* createClone() = 0;
virtual void use() = 0;
};
class Apple: public Product
{
int x;
public:
Product* createClone()
{
return new Apple(*this);
} Apple(int x = 0)
{
this->x = x;
} Apple(const Apple& other)
{
x = other.x;
} void use()
{
cout << "x = " << x << endl;
}
};
int main()
{
Product* p1 = new Apple(10);
Product* p2 = p1->createClone(); p1->use();
p2->use(); return 0;
}

  

最新文章

  1. Devexpress EXCEL导出
  2. MVC Ajax Helper或jQuery异步方式加载部分视图
  3. Maven配置中scope说明
  4. 命令行编译vs2013项目
  5. 【JAVA、C++】LeetCode 014 Longest Common Prefix
  6. html li标签前面添加图标三种方法
  7. 对于System.Net.Http的学习(一)——System.Net.Http 简介(转)
  8. 使用Spring的@Autowired 实现DAO, Service, Controller三层的注入(转)
  9. C++类对象大小的计算
  10. ASP.NET Core轻松入门之Middleware管道模型
  11. 基于GCC的openMP学习与测试
  12. 使用ArcMap做一个1:5000标准分幅图并编号
  13. HTML - label (转)
  14. 项目详解4—haproxy 反向代理负载均衡
  15. 【AtCoder】AGC015
  16. springboot-thymeleaf
  17. IntelliJ IDEA创建maven多模块项目
  18. ubuntu 系统分区
  19. git bug修复
  20. tar 解压某个指定的文件或者文件夹

热门文章

  1. SpringCloud 入门(三)
  2. 一、Adobe Premiere Pro CC概述
  3. weblogic高级进阶之ssl配置证书
  4. android 6.0 权限设置详解
  5. 一条update SQL语句是如何执行的
  6. Pytorch入门——手把手带你配置云服务器环境
  7. Celery浅谈
  8. docker创建tomcat容器
  9. 【秒懂Java】【第1章_初识Java】02_软件开发
  10. linux系统,没有安装任何编辑器的情况,如何操作文件