作者:xhl583337984 | 来源:互联网 | 2022-12-02 15:30
在C++ 98中,ios类中有一个公共函数定义为
operator void*() const;
operator bool
在C++ 11中将An 添加到类中,即
explicit operator bool() const;
从阅读参考文献来看,我不清楚为什么这operator bool
是必要的.
任何人都可以给出一个operator void*
导致问题的例子,同时operator bool
工作得很好吗?
1> Motti..:
在C++ 98中没有explicit
强制转换操作符,所以如果你有一个operator bool
它意味着该对象可以被用作一个bool
或任何可以从中投射的东西bool
(例如int
)这意味着你可能会意外地以你想要的方式使用你的对象不期望或想要(例如obj + 2
).一些对象提供了一个强制转换void*
,意味着该对象可以在一个if
语句中测试(不是null)但是不能传递给期望的函数int
等.
随着explicit
铸造操作员的引入,不再需要这样做,并且为了拥有可测试的物体,使用它explicit operator bool
比使用更好operator void*
.