实验6:原型模式
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;
}