//: 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");} ///:~