指针与引述不都是变量本身吗//为什么下面程序输出会一样呢

指针与引用不都是变量本身吗//为什么下面程序输出会一样呢?

#include <iostream>
using namespace std;

class Ticket{
public:
virtual void printTicket()
{
cout<< "\n ticket" <<endl;
}
};

class Decorator:public Ticket{
Ticket* mticket;
public:
Decorator(Ticket* t){mticket = t;}
void printTicket()
{
if(mticket!=NULL)
{
mticket->printTicket();
}
}
};

class Head:public Decorator{
public:
Head(Ticket* t):Decorator(t){}
void printTicket()
{
cout << "\n head" <<endl;
Decorator::printTicket();
}
};

class Foot:public Decorator{
public:
Foot(Ticket* t):Decorator(t){}
void printTicket()
{
Decorator::printTicket();
cout<<"\n foot"<<endl;
}
};


Ticket t;
Foot f(&t);
Head h(&f);
h.printTicket();








#include "stdafx.h"


#include <iostream>
using namespace std;

class Ticket{
public:
void printTicket()
{
cout<< "\n ticket" <<endl;
}
};

class Decorator:public Ticket{
Ticket mticket;
public:
Decorator(Ticket& t){mticket = t;}
void printTicket()
{

mticket.printTicket();
}
};

class Head:public Decorator{
public:
Head(Ticket& t):Decorator(t){}
void printTicket()
{
cout << "\n head" <<endl;
Decorator::printTicket();
}
};

class Foot:public Decorator{
public:
Foot(Ticket& t):Decorator(t){}
void printTicket()
{
Decorator::printTicket();
cout<<"\n foot"<<endl;
}
};





int _tmain(int argc, _TCHAR* argv[])
{
Ticket t;
Foot f(t);
Head h(f);
h.printTicket();
return 0;
}



------解决方案--------------------