我有一个模板类,看起来像:
template<class T>
class A
{
public:
operator T() const { return value;}
operator T&() { return value;}
private:
T value;
}
似乎永远不会调用operatorT()const。甚至在这样的声明中
const int a = myA;
其中myA是A的实例。 上面的代码是否有问题?
答案 0 :(得分:4)
只有在定义const A<T>
类型的对象时,运算符才会生效。例如:
const A<int> myA;
int someInt = myA;
将致电operator T() const
。
而且,因为它当然是正确的 - 如Benjamin Lindley所指出 - 如果您通过const
引用访问该对象。