//: C09:Inline.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Inlines inside classes

#include <iostream>
#include <string>
using namespace std;

class Point
{

int i, j, k;
public:

/* Il costruttore seguente è una funzione 'inline' ove già viene effettuato l'assegnamento agli attributi dell'oggetto. Qui, ed in genere, l'utilizzo delle funzioni inline risulta essere più sicuro (vedi macro BAND(a++)): il compilatore, infatti, vede questa proprio come una funzione completa che viene sostituita quando viene incontrato il suo nome ed i valori sono proprio dei parametri.*/


Point(): i(0), j(0), k(0) {}
Point(int ii, int jj, int kk) : i(ii), j(jj), k(kk) {}
void print(const string& msg = "") const
{

if(msg.size() != 0) cout << msg << endl;
cout << "i = " << i << ", "
<< "j = " << j << ", "
<< "k = " << k << endl;

}

};

int main()
{

Point p, q(1,2,3);
p.print("value of p");
q.print("value of q");

} ///:~