关闭

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

503人阅读 评论(1) 收藏 举报

/*
* 程序的版权和版本声明部分
* 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++程序,以
弥补自己在上个学期漏下的知识点,希望自己能坚守住自己的诺言。


 

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:102135次
    • 积分:2001
    • 等级:
    • 排名:第19322名
    • 原创:88篇
    • 转载:0篇
    • 译文:0篇
    • 评论:49条
    最新评论