I am having trouble understanding a functon that uses a ->this pointer. I also know that the function may work without using a ->this pointer, but the point is that I don't understand how the compiler understands it, or how it actually works, after reading it.
Here's the code:
The compare() function that was defined in the class definition returns 1 if the statement -this->Volume() > xBox.Volume()- is true, and 0 if not.
class CBox // Class definition at global scope
CBox(double lv = 1.0, double bv = 1.0, double hv = 1.0) // Constructor definition
cout << endl << "Constructor called.";
m_Length = lv; // Set values of
m_Width = bv; // data members
m_Height = hv;
double Volume() // Function to calculate the volume of a box
int Compare(CBox xBox) // Function to compare two boxes which returns true (1) if the first is greater than the second, and false (0) otherwise
return this->Volume() > xBox.Volume();
double m_Length; // Length of a box in inches
double m_Width; // Width of a box in inches
double m_Height; // Height of a box in inches
CBox match(2.2, 1.1, 0.5); // Declare match box
CBox cigar(8.0, 5.0,1.0); // Declare cigar box
cout << endl << "match is smaller than cigar";
cout << endl << "match is equal to or larger than cigar";
cout << endl;
BUT WHY?? shouldn't it need an if (xxx.volume() > xxx.volume())
It looks a little "magical" to me. Any help would be really appreciated. Thanks!