当前位置:编程学习 > C/C++ >>

第6周-项目2-指针填空(b)

[cpp]
/*   
* 程序的版权和版本声明部分   
* Copyright (c)2013, 烟台大学计算机学院学生   
* All rightsreserved.   
* 文件名称: object.cpp   
* 作者:杨绍宁  
* 完成日期: 2013年  4  月 5 日   
* 版本号: v1.0   
* 输入描述:无   
* 问题描述:。   
* 程序输出:。   
*/       
#include <iostream>  
using namespace std; 
class A  
{private: 
  int *a;  
  int n;  
  int MaxLen; 
 public: 
    A(int *a,int n=0,int MM=0);  
  ~A(); 
  int GetValue(int i) {return a[i];} 
  int GetMaxLen(){return MaxLen;} 
 
}; 
A::A(int *aa, int nn, int MM) 
{  n=nn; 
  MaxLen=MM; 
  if(n>MaxLen) exit(1); 
  a=new int[MaxLen]; 
  int i;//以i为循环变量把aa数组中每个元素值传送给a数组的对应元素中  
  for(i=0;i<MaxLen;i++) 
  {a[i]=aa[i];}//这里是指针,不是数组 

/*  
* 程序的版权和版本声明部分  
* Copyright (c)2013, 烟台大学计算机学院学生  
* All rightsreserved.  
* 文件名称: object.cpp  
* 作者:杨绍宁 
* 完成日期: 2013年  4  月 5 日  
* 版本号: v1.0  
* 输入描述:无  
* 问题描述:。  
* 程序输出:。  
*/     
#include <iostream>
using namespace std;
class A
{private:
  int *a;
  int n;
  int MaxLen;
 public:
 A(int *a,int n=0,int MM=0);
  ~A();
  int GetValue(int i) {return a[i];}
  int GetMaxLen(){return MaxLen;}

};
A::A(int *aa, int nn, int MM)
{  n=nn;
  MaxLen=MM;
  if(n>MaxLen) exit(1);
  a=new int[MaxLen];
  int i;//以i为循环变量把aa数组中每个元素值传送给a数组的对应元素中
  for(i=0;i<MaxLen;i++)
  {a[i]=aa[i];}//这里是指针,不是数组[cpp] view plaincopyprint?} 
A::~A(){delete []a;}//析构函数的类外定义,释放指针型数据a所指向的空间  
 
int main() 

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

}
A::~A(){delete []a;}//析构函数的类外定义,释放指针型数据a所指向的空间

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

感受:指针类型作为成员函数的参数,析构函数中,数组不能释放,指针可以

 

 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,