c++编写动态数组类 TArray,构造函数里指针数组初始化问题
1.cpp#include<iostream>usingnamespacestd;#include"1.h"intmain(){TArraya(10);//a是一个dou...
1.cpp
#include<iostream>
using namespace std;
#include "1.h"
int main()
{
TArray a(10); // a是一个double 类型的长度为10动态数组
TArray b; // b是一个double 类型的尚未确定其长度的动态数组
b.SetLen(7); // 使b成为一个长度为7的动态数组
double d[10] = { 1,2,3,4,5,6,7,8,9,10 };
a.Input(d,10); // 把c中的10个元素复制到a中
a.Print(); // 打印a中的元素
TArray c(a); // 创建了一个与a一样的c数组
b = a; // 把a的内容复制给b
a.SetElem(0,6); // 把第0个元素的值重新赋值为6
b.Exchange(4,2); // 交换b中第4个和第2个元素的内容
b.Print(); // 打印b中的元素
a.Print(); // 打印a中的元素
c.Print(); // 打印c中的元素
return 0;
}
h
#include<iostream>
using namespace std;
class TArray
{
private:
double *a;
int n;
public:
TArray();
TArray(int number);
TArray(TArray &p);
void SetLen(int m);
void Input(double *b,int m);
void Print();
void SetElem(int m,double r);
void Exchange(int m,int r);
TArray operator=(TArray);
~TArray();
};
TArray::TArray()
{
a=new double[n];
}
TArray::TArray(TArray &p)
{
a=p.a;
n=p.n;
}
TArray::TArray(int number)
{
n=number;
}
void TArray::SetLen(int m)
{
n=m;
}
void TArray::Input(double *b,int m)
{
for(int i=0;i<m;i++)
{
a[i]=b[i];
}
}
void TArray::Print()
{
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}
void TArray::SetElem(int m,double r)
{
a[m]=r;
}
void TArray::Exchange(int m,int r)
{
double temp;
temp=a[m];
a[m]=a[r];
a[r]=temp;
}
TArray TArray::operator=(TArray c)
{
TArray temp;
temp.a=c.a;
temp.n=c.n;
return temp;
}
TArray::~TArray()
{
delete []a;
}
大概是构造函数对指针数组的初始化有问题,大神能不能帮忙改改?我看见指针数组就头疼,能不能具体讲讲指针数组的问题?谢了。。。邮箱403621692@qq.com 展开
#include<iostream>
using namespace std;
#include "1.h"
int main()
{
TArray a(10); // a是一个double 类型的长度为10动态数组
TArray b; // b是一个double 类型的尚未确定其长度的动态数组
b.SetLen(7); // 使b成为一个长度为7的动态数组
double d[10] = { 1,2,3,4,5,6,7,8,9,10 };
a.Input(d,10); // 把c中的10个元素复制到a中
a.Print(); // 打印a中的元素
TArray c(a); // 创建了一个与a一样的c数组
b = a; // 把a的内容复制给b
a.SetElem(0,6); // 把第0个元素的值重新赋值为6
b.Exchange(4,2); // 交换b中第4个和第2个元素的内容
b.Print(); // 打印b中的元素
a.Print(); // 打印a中的元素
c.Print(); // 打印c中的元素
return 0;
}
h
#include<iostream>
using namespace std;
class TArray
{
private:
double *a;
int n;
public:
TArray();
TArray(int number);
TArray(TArray &p);
void SetLen(int m);
void Input(double *b,int m);
void Print();
void SetElem(int m,double r);
void Exchange(int m,int r);
TArray operator=(TArray);
~TArray();
};
TArray::TArray()
{
a=new double[n];
}
TArray::TArray(TArray &p)
{
a=p.a;
n=p.n;
}
TArray::TArray(int number)
{
n=number;
}
void TArray::SetLen(int m)
{
n=m;
}
void TArray::Input(double *b,int m)
{
for(int i=0;i<m;i++)
{
a[i]=b[i];
}
}
void TArray::Print()
{
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}
void TArray::SetElem(int m,double r)
{
a[m]=r;
}
void TArray::Exchange(int m,int r)
{
double temp;
temp=a[m];
a[m]=a[r];
a[r]=temp;
}
TArray TArray::operator=(TArray c)
{
TArray temp;
temp.a=c.a;
temp.n=c.n;
return temp;
}
TArray::~TArray()
{
delete []a;
}
大概是构造函数对指针数组的初始化有问题,大神能不能帮忙改改?我看见指针数组就头疼,能不能具体讲讲指针数组的问题?谢了。。。邮箱403621692@qq.com 展开
展开全部
main.cpp
#include "1.h"
int main()
{
TArray a(10); // a是一个double 类型的长度为10动态数组
TArray b; // b是一个double 类型的尚未确定其长度的动态数组
b.SetLen(7); // 使b成为一个长度为7的动态数组
double d[10] = { 1,2,3,4,5,6,7,8,9,10 };
a.Input(d,10); // 把c中的10个元素复制到a中
a.Print(); // 打印a中的元素
TArray c(a); // 创建了一个与a一样的c数组
b = a; // 把a的内容复制给b
a.SetElem(0,6); // 把第0个元素的值重新赋值为6
b.Exchange(4,2); // 交换b中第4个和第2个元素的内容
b.Print(); // 打印b中的元素
a.Print(); // 打印a中的元素
c.Print(); // 打印c中的元素
return 0;
}
1.h
#include<iostream>
using namespace std;
class TArray
{
private:
double *a;
int n;
public:
TArray();
TArray(int number);
TArray(TArray &p);
void SetLen(int m);
void Input(double *b,int m);
void Print();
void SetElem(int m,double r);
void Exchange(int m,int r);
TArray operator=(TArray);
~TArray();
};
TArray::TArray()
{
a=NULL; //默认构造a=NULL,n=0;你的那个n没初始化,a申请内存肯定出错
n=0;
}
TArray::TArray(TArray &p)
{
n=p.n;
a=new double[n];
for(int i=0;i<n;i++)
a[i]=p.a[i];
}
TArray::TArray(int number)
{
n=number;
a=new double[n]; //得申请内存
}
void TArray::SetLen(int m)
{
n=m;
a=NULL; //得声明a=NULL
}
void TArray::Input(double *b,int m)
{
n=m;
for(int i=0;i<m;i++)
{
a[i]=b[i];
}
}
void TArray::Print()
{
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl; //加个endl让输出界面明朗
}
void TArray::SetElem(int m,double r)
{
a[m]=r;
}
void TArray::Exchange(int m,int r)
{
double temp;
temp=a[m];
a[m]=a[r];
a[r]=temp;
}
TArray TArray::operator=(TArray c)
{
a=new double[n]; //给你改了一下这个函数,你那个有问题
for(int i=0;i<n;i++)
a[i]=c.a[i];
return *this;
}
TArray::~TArray()
{
delete []a;
}
满意请采纳哦!
展开全部
在C + +的构造函数初始化只有在成员初始化列表中被称为“初始化”,“转让”
你不明白它的意思,静态成员,即使上面的代码编译器,并有相同的连接错误,
编译器会告诉你,“ZH,MM是没有定义”错误类型初始化
外的类的定义类ATM {
静态字符ZH [5] [10] ;/ *内置5个用户信息,ZH代表帐户,MM表示密码* /
静态字符MM [5] [6]; }; br的的/>字符ATM :: ZH [5] [10] = {'2','0','1','1','0','5','1' ,'7','1','0',/> '2','0','1','1','0','5','1','7',' 1','1',/> '2','0','1','1','0','5','1','7','1','2' ,'2','0','1','1','0','5','1','7','1','3',
' 2','0','1','1','0','5','1','7','1','4'};
字符ATM :: MM [5] [6] = {'9','2','0','8','0','0',
'9','2','0' ,'8','0','1',/> '9','2','0','8','0','2',
'9',' 2','0','8','0','3',/> '9','1','1','0','0','6'}; / a>
所以是没有问题的
你不明白它的意思,静态成员,即使上面的代码编译器,并有相同的连接错误,
编译器会告诉你,“ZH,MM是没有定义”错误类型初始化
外的类的定义类ATM {
静态字符ZH [5] [10] ;/ *内置5个用户信息,ZH代表帐户,MM表示密码* /
静态字符MM [5] [6]; }; br的的/>字符ATM :: ZH [5] [10] = {'2','0','1','1','0','5','1' ,'7','1','0',/> '2','0','1','1','0','5','1','7',' 1','1',/> '2','0','1','1','0','5','1','7','1','2' ,'2','0','1','1','0','5','1','7','1','3',
' 2','0','1','1','0','5','1','7','1','4'};
字符ATM :: MM [5] [6] = {'9','2','0','8','0','0',
'9','2','0' ,'8','0','1',/> '9','2','0','8','0','2',
'9',' 2','0','8','0','3',/> '9','1','1','0','0','6'}; / a>
所以是没有问题的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
using namespace std;
class TArray
{
private:
double *a;
int n;
public:
TArray();
TArray(int number);
TArray(TArray &p);
void SetLen(int m);
void Input(double *b,int m);
void Print();
void SetElem(int m,double r);
void Exchange(int m,int r);
TArray &operator=(const TArray &);
~TArray();
};
TArray::TArray()
{
a=new double[1];
n = 1;
}
TArray::TArray(TArray &p)
{
n=p.n;
a=new double[n];
for(int i=0;i<n;i++) {
a[i] = p.a[i];
}
}
TArray::TArray(int number)
{
a=new double[number];
}
void TArray::SetLen(int m)
{
delete[] a;
n=m;
a=new double[n];
}
void TArray::Input(double *b,int m)
{
delete[] a;
n = m;
a=new double[n];
for(int i=0;i<m;i++)
{
a[i]=b[i];
}
}
void TArray::Print()
{
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}
void TArray::SetElem(int m,double r)
{
if(m<n)
a[m]=r;
}
void TArray::Exchange(int m,int r)
{
if(m>=n || r>=n) return;
double temp;
temp=a[m];
a[m]=a[r];
a[r]=temp;
}
TArray &TArray::operator=(const TArray &c)
{
if(this != &c) {
delete[] a;
n = c.n;
a=new double[n];
for(int i=0;i<n;i++) {
a[i] = c.a[i];
}
}
return *this;
}
TArray::~TArray()
{
delete []a;
}
有问题私信或者qq慢慢问吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
干嘛要重复造轮子 std::vector<double> 不就可以了
模板类array(C++11)也行吧
模板类array(C++11)也行吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询