类型转换重载的最佳实践是什么?

时间:2011-09-08 18:57:14

标签: c++ casting

class A
{
public:
    A ( unsigned _a ) : a (_a)
    {
    }
    operator unsigned& () 
    {
        return a;
    }
    operator const unsigned () const
    {
        return a;
    }
    unsigned a; 
}; 

在上面的例子中,我创建了两个类型转换运算符,一个给出引用,一个给出一个副本。两者都有缺点。有什么建议吗?


由于C ++中允许使用类型转换运算符,我们如何才能最好地利用它?在哪里?

1 个答案:

答案 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; 
};