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;

    }

     

     

  • 相关阅读:
    前端面试的一道数组元素值去重问题
    数组元素前移,第一个元素放置数组末位
    Linux 查询oracle错误日志&警告日志
    CentOS 6.4 源码安装MySQL 5.6
    Oracle 表空间不足引起的问题及解决方法
    Oracle 强制中止正在执行的SQL语句
    request for member 'GetByteArrayElements'
    jni入门 eclipsecygwin+ndk
    ffmpeg结构体(二)
    ffmpeg结构体(三)
  • 原文地址:https://www.cnblogs.com/092e/p/15530738.html
Copyright © 2011-2022 走看看