标签: c++ iostream conversion-operator
我不小心在operator delete[]对象上调用了ifstream,而不是文件名。我希望编译器发出错误,因为delete[]只对指针而不是对象进行操作。但是,编译器没有抱怨(甚至没有警告)。
operator delete[]
ifstream
delete[]
调试时,我看到系统在对象上调用operator void*。令人惊讶的是,这甚至没有崩溃(demo)。
operator void*
所以我想知道:为什么这个运算符首先存在?
是否需要支持if (!file)语法?如果是,为什么不将其转换为安全布尔或使用explicit operator bool代替?
if (!file)
explicit operator bool