读书人

c++引用在构造函数里使用如何错了?

发布时间: 2013-07-16 22:38:05 作者: rapoo

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) {}

读书人网 >C++

热点推荐