您的位置:首页 > 其它

6-2 程序填空(指针类型作为成员函数的参数)

2012-03-28 17:01 295 查看
/*

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生

* All rights reserved.

* 文件名称:                             

* 作    者: 张传新                            

* 完成日期:  2012       年  3     月     28   日

* 版 本 号:  1       

* 对任务及求解方法的描述部分

* 输入描述:

* 问题描述:

* 程序输出:

* 问题分析:……

* 算法设计:……

*/

#include<iostream>
using namespace std;
class A
{
private:
int *a;
int n;
int MaxLen;
public:
A(): a(0), n(0), MaxLen(0) {}   //定义构造函数
~A();                            //定义析构函数
A(int *aa, int nn, int MM);
int GetValue(int i) {return a[i];}
};
A::A(int *aa, int nn, int MM)
{
n=nn;
MaxLen=MM;
if(n>MaxLen)
exit(1);
a=new int[MaxLen];
for(int i=0;i<MaxLen;++i) //以i为循环变量把aa数组中每个元素值传送给a数组的对应元素中
{
a[i]=*(aa+i);
};
}
A::~A()                       //析构函数的类外定义,释放指针型数据a所指向的空间
{
delete[] a;
}

void main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10};
A r(b,9,10);
int i,s=0;
for(i=0;i<10;++i)        //以i为循环变量,把r对象的a数据成员中的每个元素值依次累加到s中
{
s=s+r.GetValue(i);
} ;
cout<<"s="<<s<<endl;
system("pause");
}

彩色部分为填空部分

运行结果:

经验积累:

执行析构函数的情况:1.如果在一个函数中定义了一个对象(它是自动局部对象)

,当这个函数被调用结束时,对象应该释放,在对象释放前自动执行析构函数;

2.static局部对象在函数调用结束时对象并不释放,因此也不调用析构函数,只在

main函数结束或调用exit函数结束时,才调用static局部对象的析构函数;3.如果

定义了一个全局对象,则在程序的流程离开其作用域时(如main函数结束或调用exit

函数),调用该全局对象的析构函数;4.如果用new运算符动态的建立了一个对象,

,当用delete运算符释放该对象时,先调用该对象的析构函数。

上机感言:

我决定每天在做完C++作业的同时,额外的抽出至少半小时的时间编写C++程序,以

弥补自己在上个学期漏下的知识点,希望自己能坚守住自己的诺言。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delete 作业 算法 任务 c