C++自增运算符重载前序后序问题
class numCal {
public:
numCal(int [], int); // 构造函数,形参分别是整形数组、数组长度
numCal(const numCal&); //拷贝构造函数
~numCal(); // 析构函数,要完成释放内存的操作
int sum(); // 求动态数组arr中size个元素值和
numCal& operator=(const numCal&); //=运算符重载
numCal& operator++(); //前序++运算符重载,使得++A后,A.arr的每个元素值加1
//(A为numCal类型的对象,下同);
numCal operator++(int); //后序++运算符重载,使得A++后,A.arr的每个元素值加1。
private:
int size; // 数组arr元素个数
int *arr; // 动态数组
};
numCal::numCal(int num[],int s){
size=s;
arr=new int[size];
for(int i(0);i<size;i++)
arr[i]=num[i];
}
numCal::numCal(const numCal& num){
size=num.size;
arr=new int[size];
for(int i(0);i<size;i++)arr[i]=num.arr[i];
}
numCal::~numCal(){
delete []arr;
}
numCal&numCal::operator++(){
for(int i(0);i<size;i++)arr[i]++;
return *this;
}
numCal numCal::operator++(int){
for(int i(0);i<size;i++)arr[i]++;
return *this;
}
int numCal::sum(){
int result(0);
for(int i(0);i<size;i++)
result+=arr[i];
return result;
}
numCal&numCal::operator=(const numCal&num){
int *temp=new int[num.size];
for(int i(0);i<num.size;i++)
temp[i]=num.arr[i];
size=num.size;
arr=new int[size];
for(int i(0);i<size;i++)
arr[i]=temp[i];
return *this;
}
其他函数就不用看了,应该没错,就是自增运算符那里我不知道怎么做到可以后续自增。下面是主函数检测代码:
int main(){
int a[]={1,2,3,4,5,6};
int b[]={1,2,3};
int c[]={7,8,9,10,11,12,13,14,15};
numCal num(a,6),num3(c,9),num2(b,3);
for(int i(0);i<6;i++)cout<<num.arr[i]<<" ";
cout<<endl;
num=++num3++;
for(int i(0);i<10;i++)cout<<num.arr[i]<<" ";
cout<<endl;
system("pause");
return 0;
}
即使是后续的,也是加一了才输出,怎么做到输出了才加一呢?
[解决办法]
即使是后续的,也是加一了才输出,怎么做到输出了才加一呢?
-------------
cout<<num++<<endl;
cout<<num<<endl;
你说的是这个意思?
C++自增运算符重载前序后序有关问题
C++自增运算符重载前序后序问题class numCal {public:numCal(int [], int) //构造函数,形参分别是整形数
