< previous page page_152 next page >

Page 152
LISTING 10.2 continued
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
 9:          SimpleCat() {itsAge = 2; }
10:         ~SimpleCat() {}
11:         int GetAge() const { return itsAge; }
12:         void SetAge(int age) { itsAge = age; }
13:     private:
14:         int itsAge;
15:     };
16:
17:     int main()
18:     {
19:         SimpleCat * Frisky = new SimpleCat;
20:         cout << Frisky is  << Frisky->GetAge() <<  years old\n;
21:         Frisky->SetAge(5);
22:         cout << Frisky is  << Frisky->GetAge() <<  years old\n;
23:         delete Frisky;
24:         return 0;
25:     }

Output:
Frisky is 2 years old
Frisky is 5 years old
Analysis: In line 19, a SimpleCat object is instantiated on the free store. The default constructor sets its age to 2, and the GetAge() method is called in line 20. Because this is a pointer, the points-to operator (->) is used to access the member data and functions. In line 21, the SetAge() method is called, and GetAge() is accessed again in line 22.
Member Data on the Free Store
One or more of the data members of a class can be a pointer to an object on the free store. The memory can be allocated in the class constructor or in one of its methods, and it can be deleted in its destructor, as Listing 10.3 illustrates.
LISTING 10.3 POINTERS AS DATA MEMBERS

d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
1:  // Listing 10.3
2:  // Pointers as data members
3:
4:    #include <iostream.h>
5:
6:    class SimpleCat
7:    {
8:    public:
9:        SimpleCat();
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
continues

 
< previous page page_152 next page >

If you like this book, buy it!