I just have a few quick questions. So first, I was wondering how do I go about c
ID: 3679238 • Letter: I
Question
I just have a few quick questions. So first, I was wondering how do I go about creating these? I was thinking of making a new object in the function, copying the int array(The original called object) to the newly declared int array, looping through the copied array to add 1 to each digit, then returning the object I declared in my function. Then for the second, it's a similar process, but I return the original object used rather than the new one I copied to. Is this a fair way to think about it??
Also, I was wondering why does the postincrement operator takes an int paramter while the other doesn't? What is this int for? Thanks! If you need more info, let me know!
Explanation / Answer
This comes in the part of Operator overloading in c++.
We have increment (++) and decrement (--) operators are two important unary operators available in C++.
Again in this, we have pre increment and post increment in both ++, -- Operators.
I will give you brief explanation with the following example, which shows how the prefix and postfix increment (++) operator can be overloaded and differ from each other.
Program:
#include <iostream.h>
using namespace std;
class Time
{
private:
int hours; // 0 to 23
int minutes; // 0 to 59
public:
// required constructors
Time(){
hours = 0;
minutes = 0;
}
Time(int h, int m){
hours = h;
minutes = m;
}
// method to display time
void displayTime()
{
cout << "H: " << hours << " M:" << minutes <<endl;
}
// overloaded prefix ++ operator
Time operator++ ()
{
++minutes; // increment this object
if(minutes >= 60)
{
++hours;
minutes -= 60;
}
return Time(hours, minutes);
}
// overloaded postfix ++ operator
Time operator++( int )
{
// save the orignal value
Time T(hours, minutes);
// increment this object
++minutes;
if(minutes >= 60)
{
++hours;
minutes -= 60;
}
// return old original value
return T;
}
};
int main()
{
Time T1(11, 59), T2(10,40);
++T1; // increment T1
T1.displayTime(); // display T1
++T1; // increment T1 again
T1.displayTime(); // display T1
T2++; // increment T2
T2.displayTime(); // display T2
T2++; // increment T2 again
T2.displayTime(); // display T2
return 0;
}
Output:
H: 12 M:0
H: 12 M:1
H: 10 M:41
H: 10 M:42