我有一个模板类,看起来像:
template<class T>
class A
{
public:
operator T() const { return value;}
operator T&() { return value;}
private:
T value;
}
Run Code Online (Sandbox Code Playgroud)
似乎从未调用过operatorT()const。即使在这样的陈述中
const int a = myA;
Run Code Online (Sandbox Code Playgroud)
其中myA是A的实例。上述代码缺少某些地方吗?
仅当您定义类型的对象时,运算符才会生效const A<T>。例如:
const A<int> myA;
int someInt = myA;
Run Code Online (Sandbox Code Playgroud)
会打电话给operator T() const。
而且,既然这是真的-就像本杰明·林德利(Benjamin Lindley)指出的那样-如果您通过const引用访问对象。
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |