我要被这个C++程序整疯了(关于拷贝函数),请进来看看吧!!!~~~~(>_<)~~~~

程序如下:////e0902.cpp//#include<iostream>usingnamespacestd;//classVector{intsize;int*buf... 程序如下:
//
//e0902.cpp
//
#include<iostream>
using namespace std;
//
class Vector{
int size;
int* buffer;
public:
Vector(int s=100);
Vector(const Vector &t );
int& elem(int ndx);
void display();
void set();
~Vector();
};
Vector::Vector(int s){
buffer=new int[size=s];
for(int i=0; i<size; i++)
buffer[i]=i*i;
}
Vector::Vector(const Vector &t){
cout<<"copy Constructing "<<t.size<<"\n";
buffer=new int[t.size];
for(int i=0; i<t.size; i++)
buffer[i]=i*i;
}
int& Vector::elem(int ndx){
if(ndx<0||ndx>=size){
cout<<"error in index"<<endl;
exit(1);
}
return buffer[ndx];
}
void Vector::display(){
cout<<"construting"<<size<<"\n";
for(int j=0; j<size; j++)
cout<<buffer[j]<<endl;
}
void Vector::set(){
for(int j=0; j<size; j++)
buffer[j]=j+1;
cout<<buffer[j]<<endl;
}
Vector::~Vector(){ delete[]buffer; }
//
int main(){
Vector a(10);
Vector b(a);
a.set();//这里,我只希望对象a当中的size能够传到set()当中去,但看起来并不成功!
b.display();//同样,我也希望b当中的size能够传到display()当中去,也失败了!
}

对象a、b中的size就是无法传到他们所调用的函数中去!!怎么样才能做到这一点呢?
更让我不解的是,为什么删掉那个拷贝构造函数之后对象a、b中的size都能成功传到两个函数当中去呢?

答得好绝对加分,因为我好崩溃啊,能想到的都试过了。。唉。。。
谢谢了!!!!
展开
 我来答
百度网友7a7e6f3
2011-05-28 · TA获得超过252个赞
知道小有建树答主
回答量:211
采纳率:100%
帮助的人:111万
展开全部
改两个函数就行了
第一个:复制构造函数
Vector::Vector(const Vector &t)
{
cout<<"copy Constructing "<<t.size<<"\n";
buffer=new int[t.size];
size=t.size;//给size赋值
for(int i=0; i<t.size; i++)
buffer[i]=i*i;
}
复制构造函数中也要给size变量赋值,否则会影响显示的。
第二个:set函数
void Vector::set(){
for(int j=0; j<size; j++){
buffer[j]=j+1;
cout<<buffer[j]<<endl;
}
}
给for循环加上花括号,因为要执行的循环语句有两句。
百度网友43ebde78e
2011-05-28 · TA获得超过1040个赞
知道小有建树答主
回答量:592
采纳率:0%
帮助的人:739万
展开全部
拷贝构造函数没有给成员变量size=t.size
void Vector::set(){
for(int j=0; j<size; j++)
{//大括号没加
buffer[j]=j+1;
cout<<buffer[j]<<endl;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式