Arm*_*yan 4 c++ operator-overloading
因此,C++允许重载一元operator &(地址).当你被正确地重载时,你是否知道任何真实的例子operator &?还有第二个更具体的问题,你是否知道在保留地址语义的同时被正确重载的任何现实世界的例子operator &?TIA
我有207个真实世界的例子operator &():代码搜索1,代码搜索2.
包括SafeInt<>(获取底层裸整数),boost :: gil(显然也是为了产生原始数据),Mozilla(说"定义运算符有风险,但是,嘿,我们知道我们在做什么.") ,wxWidgets,Armagetron等等.
似乎有些人使用迭代器习惯用法&*it来向后获取原始引用或指针,并写入*&it以获取原始引用并&it获取原始指针.
请注意,一旦你的类型重载operator&并返回与内置运算符不同的东西,你的类型就不再是CopyConstructible了(在C++ 03中 - C++ 0x似乎已经解除了它),因此不能用作元素类型在标准容器中.