zoukankan      html  css  js  c++  java
  • 原型模式向量的原型

    今天进行了原型模式---向量的原型的实验,最终成功运行了代码,也熟悉了原型模式的模式原理和意义所在

    下面是代码部分和要求部分:

    [实验任务一]:向量的原型

    C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。

    实验要求:

    1. 画出对应的类图;

    2.提交源代码(用C++完成);

    #include "stdafx.h"

    using namespace std;

    class AbstractVector

    {

    public:

    virtual AbstractVector* Clone() const = 0;

    virtual void showData() = 0;

    public:

    double* len;//向量长度'

    double begin;

    double end;

    };

    class vector:public AbstractVector{

    public: vector(double beg, double en){

    begin = beg;

    end = en;

    len = new double;

    if (end >= begin)

    *len = end - begin;

    else

    *len = begin - end;

    }

    vector(const vector& cp){

    int cho=0;

    begin = cp.begin;

    end = cp.end;

    cout << "深克隆输入1,浅克隆选择2" << endl;

    cin >> cho;

    if (cho == 1){

    len = new double;

    *len = *(cp.len);

    }

    else

    len = cp.len;

    }

    void showData(){

    cout << "向量的长度为" << *len<<endl;

    }

    AbstractVector* Clone() const{

    return new vector(*this);

    }

    ~vector(){

    delete len;

    }

    };

    int _tmain(int argc, _TCHAR* argv[])

    {

    AbstractVector* p = new vector(0,10);

    AbstractVector* p1 = p->Clone();

    cout << "p的长度为"; p->showData();

    cout << "p1的长度为"; p1->showData();

    if (p->len == p1->len){

    cout << "这是浅克隆" << endl;

    cout << "p->len的地址为" << p->len << endl;

    cout << "p1->len的地址为" << p1->len << endl;

    }

    else{

    cout << "这是深克隆" << endl;

    cout << "p->len的地址为" << p->len << endl;

    cout << "p1->len的地址为" << p1->len << endl;

    }

    system("pause");

    return 0;

    }

     

     

  • 相关阅读:
    在线加密解密
    ctcms Nginx 伪静态
    iTem2 保持连接,解决ssh的"Write failed: Broken pipe"问题
    打开窗口弹出页面
    点击弹窗
    javascript 技巧
    使用Chrome工具来分析页面的绘制状态
    jquery结合JSONP教程—明河谈jquery
    使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuery 快速构建强大的 mashup
    jsonp详解
  • 原文地址:https://www.cnblogs.com/092e/p/15530738.html
Copyright © 2011-2022 走看看