topical media & game development
basic-program-code-07-Ex7-13.c
? /
basic-program-code-07-Ex7-13.c
// Ex7_13.cpp
// Exercising the indirect member access operator
include <iostream>
using std::cout;
using std::endl;
class CBox // Class definition at global scope
{
public:
// Constructor definition
CBox(double lv = 1.0, double bv = 1.0, double hv = 1.0)
{
cout << endl << "Constructor called.";
m_Length = lv; // Set values of
m_Width = bv; // data members
m_Height = hv;
}
// Function to calculate the volume of a box
double Volume() const
{
return m_Length*m_Width*m_Height;
}
// Function to compare two boxes which returns true (1)
// if the first is greater that the second, and false (0) otherwise
int Compare(CBox* pBox) const
{
return this->Volume() > pBox->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 boxes[5]; // Array of CBox objects declared
CBox match(2.2, 1.1, 0.5); // Declare match box
CBox cigar(8.0, 5.0, 1.0); // Declare cigar Box
CBox* pB1 = &cigar; // Initialize pointer to cigar object address
CBox* pB2 = 0; // Pointer to CBox initialized to null
cout << endl
<< "Address of cigar is " << pB1 // Display address
<< endl
<< "Volume of cigar is "
<< pB1->Volume(); // Volume of object pointed to
pB2 = &match;
if(pB2->Compare(pB1)) // Compare via pointers
cout << endl
<< "match is greater than cigar";
else
cout << endl
<< "match is less than or equal to cigar";
pB1 = boxes; // Set to address of array
boxes[2] = match; // Set 3rd element to match
cout << endl // Now access thru pointer
<< "Volume of boxes[2] is " << (pB1 + 2)->Volume();
cout << endl;
return 0;
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.