//: C06:Constructor1.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Constructors & destructors
#include <iostream>
using namespace std;
class Tree
{
int height;
public:/* Constructor */
Tree(int initialHeight);
/* Destructor */
~Tree();
void grow(int years);
void printsize();};
Tree::Tree(int initialHeight)
{
height = initialHeight;
cout << "inside Tree constructor (" << height << ")" << endl;}
Tree::~Tree()
{
cout << "inside Tree destructor (" << height << ")" << endl;
}
void Tree::grow(int years)
{
height += years;
}
void Tree::printsize()
{
cout << "Tree height is " << height << endl;
}
int main()
{
cout << "before opening brace" << endl;
{
cout << "after opening brace" << endl;
Tree t(12);
cout << "after Tree creation" << endl;
t.printsize();
t.grow(4);
cout << "before closing brace" << endl;}
/* A questo punto, essendo fuori dello "scope" del costruttore,l'oggetto viene "distrutto", ovvero liberata la memoria precedentemente assegnatagli.
N.B.
Abbiamo visto che (per quanto riguanda lo scope) è megliore ridurre al minimo l'ambito di validità di una variabile */
cout << "after closing brace" << endl;} ///:~