c++引用在构造函数里使用怎么错了???
class Ticket{
public:
virtual void printTicket()
{
cout<< "\n base" <<endl;
}
};
class Decorator:public Ticket{
Ticket& ticket;
public:
Decorator(Ticket& t){ticket = t;}
void printTicket()
{
ticket.printTicket();
}
};
[解决办法]
引用型变量的赋值等同于向被它引用的变量赋值:
int a, b;
int & ra = a;
int & rb = b;
ra = rb;//这句话不会让ra去引用b,而是相当于a=b;
所以你在构造函数中的代码:
Decorator(Ticket& t){ticket = t;}
并没有初始化ticket,而引用型变量不初始化是不能使用的,因为它没有引用任何对象。
引用类型成员的初始化必须在初始化表中完成:
Decorator(Ticket& t) : ticket(t) {}