软件设计 石家庄铁道大学信息学院

实验6:原型模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解原型模式的动机,掌握该模式的结构;
2、能够利用原型模式解决实际问题。

[实验任务一]:向量的原型
用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。
实验要求:
1.画出对应的类图;
2.提交源代码(用C++完成);
3.注意编程规范。

Client.cpp

include>

using namespace std;

class AbstractVector {
public:
virtual AbstractVector* Clone() const = 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;
cin >> cho;
if (cho == 1) {
len = new double;
len = (cp.len);
} else
len = cp.len;
}
AbstractVector
Clone() const {
return new Vector(
this);
}
~Vector() {
delete len;
}
};
int main() {
AbstractVector
p = new Vector(0,10);
AbstractVector
p1 = p->Clone();
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;
}
cout << "深克隆后的指针指向不同的内存空间,地址不同;而浅克隆后的指针指向同一内存空间,地址相同";
return 0;
}

posted on 2024-10-17 17:23  许七安gyg  阅读(2)  评论(0编辑  收藏  举报
$(document).ready(function() { // 禁止右键 $(document).bind("contextmenu", function(){return false;}); // 禁止选择 $(document).bind("selectstart", function(){return false;}); // 禁止Ctrl+C 和Ctrl+A $(document).keydown(function(event) { if ((event.ctrlKey&&event.which==67) || (event.ctrlKey&&event.which==86)) { //alert("对不起,版权所有,禁止复制"); return false; } }); });