class A
{
public:
A ( unsigned _a ) : a (_a)
{
}
operator unsigned& ()
{
return a;
}
operator const unsigned () const
{
return a;
}
unsigned a;
};
在上面的例子中,我创建了两个类型转换运算符,一个给出引用,一个给出一个副本。两者都有缺点。有什么建议吗?
由于C ++中允许使用类型转换运算符,我们如何才能最好地利用它?在哪里?
答案 0 :(得分:3)
无论如何,当您返回副本时,如何制作第二个const
。这将消除歧义:
class A
{
public:
A ( unsigned _a ) : a (_a)
{
}
operator unsigned& ()
{
return a;
}
operator unsigned () const // make this one const
{
return a;
}
unsigned a;
};