软件设计模式————(原型模式)
1.软件设计模式————(简单工厂模式)2.软件设计模式————(工厂方法模式)3.软件设计模式————(抽象工厂模式)4.软件设计模式————(建造者模式)
5.软件设计模式————(原型模式)
6.软件设计模式————(单例模式)7.软件设计模式————(适配器模式)8.软件设计模式————(桥接模式)9.软件设计模式————(组合模式)10.软件设计模式————(装饰模式)11.软件设计模式————(外观模式)12.软件设计模式————(享元模式)13.软件设计模式————(代理模式)14.软件设计模式————(命令模式)15.软件设计模式————(解释器模式)16.软件设计模式————(迭代器模式)17.软件设计模式————(中介者模式)18.软件设计模式————(备忘录模式)19.软件设计模式————(观察者模式)20.软件设计模式————(职责链模式)[实验任务一]:向量的原型
用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。
实验要求:
1.画出对应的类图;
2.提交源代码(用C++完成);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <iostream> using namespace std; //向量类 class Vector{ private : int *p; int len; public : Vector( int len); Vector( const Vector &vector); //拷贝构造函数 ~Vector(); int operator[]( int i) const { return p[i]; } int &operator[]( int i){ return p[i]; } int length() const { return len; } }; Vector::Vector( int len): len(len){ p = ( int *)calloc( len, sizeof( int ) ); } //拷贝构造函数 Vector::Vector( const Vector &vector){ this ->len = vector.len; this ->p = vector.p; } Vector::~Vector(){ free(p); } //打印 void display( const Vector &vector){ int len = vector.length(); for ( int i= 0 ; i<len; i++){ if (i == len- 1 ){ cout<<vector[i]<<endl; } else { cout<<vector[i]<< ", " ; } } } int main(){ Vector v1( 10 ); for ( int i= 0 ; i< 10 ; i++){ v1[i] = i; } Vector v2 = v1; v2[ 6 ] = 55 ; v2[ 2 ] = 20 ; cout<< "浅克隆:" <<endl; cout<< "更改copyVector后vector的数据:" <<endl; display(v1); cout<< "更改copyVector后copyVector的数据:" <<endl; display(v2); return 0 ; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix