C++走向远洋——42(项目二,我的数组类,深复制,构造函数)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhello * 完成日期:2016年4月24日 * 版本号:V1.0 * 问题描述:深复制,数组类 * 程序输入:无 * 程序输出:见运行结果 */ #include<iostream> #include<cstring> using namespace std; class MyArray{ private: int *arrayAddr; int len; int max; public: MyArray(int *a,int n); ~MyArray(); int getValue(int i); //获得数组中下标为i的元素值 int getlen(); //返回数组长度 int getMax(); //返回数组中最大值 }; MyArray::MyArray(int *a,int n) { arrayAddr=new int[n]; max=a[0]; int i; for(i=0;i<n;i++) arrayAddr[i]=a[i]; len=n; } int MyArray::getMax() { int i; for(i=0;i<len;i++) { if(max<*(arrayAddr+i)) max=*(arrayAddr+i); } return max; } MyArray::~MyArray() { delete [] arrayAddr; } int MyArray::getlen() { return len; } int MyArray::getValue(int i) { return *(arrayAddr+i); } int main() { int b[10]={75,99,90,93,38,15,5,7,52,4}; MyArray r1(b,10); cout<<"最大值:"<<r1.getMax()<<endl; int c[15]={18,68,10,52,3,19,12,100,56,96,95,97,1,4,93}; MyArray r2(c,15); int i,s=0; for(i=0;i<r2.getlen();i++) s+=r2.getValue(i); cout<<"所有元素的和为:"<<s<<endl; return 0; }
运行结果;
心得:
在实现类的构造函数时,我仅仅把a首元素的地址赋值给了arrayddr,产生了错误,后来再知道每一个元素都需要单独分配空间