在这种情况下
void f(int *);
void f(const int *);
...
int i;
f(&i);
情况很清楚 - f(int *) 被调用,这似乎是正确的。
但是,如果我有这个(错误地这样做了(*)):
class aa
{
public:
operator bool() const;
operator char *();
};
void func(bool);
aa a;
func(a);
运算符 char *() 被调用。我无法弄清楚为什么这样的决策路径会比使用运算符 bool() 更好。有任何想法吗?
(*) 如果将 const 添加到第二个运算符,则代码当然可以按预期工作。