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.Code:#include <iostream> using std::cout; using std::endl; class CBox // Class definition at global scope { public: 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 { return m_Length*m_Width*m_Height; } 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(); } private: 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 }; int main() { CBox match(2.2, 1.1, 0.5); // Declare match box CBox cigar(8.0, 5.0,1.0); // Declare cigar box if(cigar.Compare(match)) cout << endl << "match is smaller than cigar"; else cout << endl << "match is equal to or larger than cigar"; cout << endl; return 0; }
BUT WHY?? shouldn't it need an if (xxx.volume() > xxx.volume())
return 1;
else
return 0;
??
It looks a little "magical" to me. Any help would be really appreciated. Thanks!



LinkBack URL
About LinkBacks



