为什么c ++ I / O流的转换运算符为void *?

时间:2014-08-28 16:36:17

标签: c++ iostream conversion-operator

我不小心在operator delete[]对象上调用了ifstream,而不是文件名。我希望编译器发出错误,因为delete[]只对指针而不是对象进行操作。但是,编译器没有抱怨(甚至没有警告)。

调试时,我看到系统在对象上调用operator void*。令人惊讶的是,这甚至没有崩溃(demo)。

所以我想知道:为什么这个运算符首先存在?

是否需要支持if (!file)语法?如果是,为什么不将其转换为安全布尔或使用explicit operator bool代替?

0 个答案:

没有答案