实验6:原型模式

实验6:原型模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解原型模式的动机,掌握该模式的结构;

2、能够利用原型模式解决实际问题。

 

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

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

实验要求:

1. 画出对应的类图;

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

3.注意编程规范。

#include <iostream>

 

class Vector {

private:

    int* data; // 指向向量数据的指针

    int size; // 向量的长度

 

public:

    // 构造函数

    Vector(int size) {

        this->size = size;

        data = new int[size];

    }

 

    // 析构函数

    ~Vector() {

        delete[] data;

    }

 

    // 获取向量长度

    int getSize() {

        return size;

    }

 

    // 获取指定位置的元素

    int getElement(int index) {

        return data[index];

    }

 

    // 设置指定位置的元素

    void setElement(int index, int value) {

        data[index] = value;

    }

 

    // 浅克隆

    Vector shallowClone() {

        Vector clone(size);

        clone.data = data;

        return clone;

    }

 

    // 深克隆

    Vector deepClone() {

        Vector clone(size);

        for (int i = 0; i < size; i++) {

            clone.data[i] = data[i];

        }

        return clone;

    }

};

 

int main() {

    // 创建一个长度为5的向量

    Vector v(5);

 

    // 设置向量元素的值

    for (int i = 0; i < v.getSize(); i++) {

        v.setElement(i, i + 1);

    }

 

    // 浅克隆

    Vector shallowCopy = v.shallowClone();

 

    // 修改原始向量的第一个元素

    v.setElement(0, 10);

 

    // 输出浅克隆后的向量

    std::cout << "浅克隆: ";

    for (int i = 0; i < shallowCopy.getSize(); i++) {

        std::cout << shallowCopy.getElement(i) << " ";

    }

    std::cout << std::endl;

 

    // 深克隆

    Vector deepCopy = v.deepClone();

 

    // 修改原始向量的第一个元素

    v.setElement(0, 20);

 

    // 输出深克隆后的向量

    std::cout << "深克隆: ";

    for (int i = 0; i < deepCopy.getSize(); i++) {

        std::cout << deepCopy.getElement(i) << " ";

    }

    std::cout << std::endl;

 

    return 0;

}

 

posted @   会秃头的小白  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
  1. 1 原来你也在这里 周笔畅
  2. 2 世间美好与你环环相扣 柏松
  3. 3 起风了 吴青峰
  4. 4 极恶都市 夏日入侵企划
极恶都市 - 夏日入侵企划
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 王星

作曲 : 灰鸿啊/皮皮

编曲 : 夏日入侵企画

制作人 : 邢硕

节奏吉他 : 肯尼

主音吉他 : 张伟楠

贝斯 : 皮皮

鼓 : 海鑫

和声 : 邢硕

音效制作 : 邢硕

录音 : 邢硕/夏国兴

混音 : 于昊

特别鸣谢 : 张伟楠

这城市的车流和这地表的颤抖

像一颗石子落入地心之后泛起的温柔

暗涌

河水流过转角她的楼

被梦魇

轻声呓语唤醒身后的幼兽

失效感官焦灼只剩下

麻木愚钝无从感受

共同支撑全都瓦解

只是我们现在都

已忘记到底是

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去陈旧的还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

眼看这情节开始变旧

所有的城池已失守

最终无法占有

无眠辗转

伴着人间破碎的旧梦

像繁星

退却后只剩下混沌的夜空

炙热

掩盖风声鹤唳的担忧

把所有失落无助反手推入

无尽的白昼

失效感官焦灼只剩下

麻木愚钝无从感受

共同支撑全都瓦解

只是我们现在都已经忘记到底是

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

眼看这情节开始变旧

所有的城池早已失守

惶恐难以接受

缠绵往复不肯放手

最终无法占有

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁 灭 即 拯 救

谁掠夺春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

明知城池已失守

缠绵往复不肯放手

最终无法占有

点击右上角即可分享
微信分享提示