设计模式之原型模式(C++实现)
2016-05-26 19:18
471 查看
原型模式其实就是从一个对象再创建另一个对象,并且不需要知道任何创建的细节。其实就相当于拷贝。
/*********************************************************************Copy.h*****************************************************************/
/*********************************************************************man.cpp*****************************************************************/
Number is 10 and 20
p is 25
Number is 10 and 20
p is 25
//即使myCopy指针被销毁了,依然不会影响拷贝的值
/*********************************************************************Copy.h*****************************************************************/
#include <iostream> #pragma once; using namespace std; class Copy { int n,m; public: int *p; Copy() { }; Copy(const Copy& copy) { n = copy.n; m = copy.m; p = new int; *p = *(copy.p); } void SetNumber(int a,int b) { n=a; m=b; } Copy* Clone() { return new Copy(*this); } void show() { cout<<"Number is "<<n<<" and "<<m<<endl; cout<<"p is "<<*p<<endl; } };
/*********************************************************************man.cpp*****************************************************************/
#include "Copy.h" int main() { Copy *myCopy = new Copy; myCopy->SetNumber(10,20); int p =25; int *q = &p; myCopy->p = q; myCopy->show(); Copy *myCopy1 = myCopy->Clone(); delete myCopy; myCopy = NULL; myCopy1->show(); getchar(); return 0; }输出:
Number is 10 and 20
p is 25
Number is 10 and 20
p is 25
//即使myCopy指针被销毁了,依然不会影响拷贝的值
相关文章推荐
- c++对称矩阵的压缩存储
- C++设计模式浅识原型模式
- HDU 1171.Big Event in HDU【01背包】【5月26】
- 【C++ 基础】c++中冒号(:)和双冒号(::)的用法
- c++ 拷贝构造函数
- C++走向远洋——55(项目一3、分数类的重载、>><<的重载)
- C语言存储空间管理和链表杂记
- C++走向远洋——54(项目一2、分数类的重载、取倒数)
- HDU 1173.采矿【不水的水题】【中位数】【5月26】
- [C++]数据永久化-下篇(使用数据库)
- 【C/C++学习笔记】C 实现大整数的加法操作 —— 纪念入职公司时的上机题
- 解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题
- C++面试笔记--指针和引用
- C++ 类的继承——继承的细节
- 同样是公务员,为什么有人年薪4万有人40万?
- RESTFUL API Server in C++
- 【C语言】03-第一个C程序代码分析
- c语言下的变量类型及计算
- C++ 面向对象 —— 实用程序片段
- 【C语言】02-第一个C程序