Boost库,序列化和&符号运算符?

时间:2012-07-16 03:58:57

标签: c++ boost operator-overloading boost-serialization

我来自Java和C#背景,作为深入了解C ++的一种方式,我正在使用Qt和Boost构建一个图标停靠。看一下序列化的文档,我偶然发现了一些有趣的使用&运营商。

class gps_position
{
private:
    friend class boost::serialization::access;
    // When the class Archive corresponds to an output archive, the
    // & operator is defined similar to <<.  Likewise, when the class Archive
    // is a type of input archive the & operator is defined similar to >>.
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & degrees;
        ar & minutes;
        ar & seconds;
    }
    int degrees;
    int minutes;
    float seconds;

&amp;的目的操作员非常清楚阅读评论。我想知道的是,它是如何实现的?它是如何知道什么是“&amp;”应该是什么意思?我在Google上搜索了&符号运算符的更多用途,但我能找到的只是&amp;用于表示参考而不是操作。

感谢。

2 个答案:

答案 0 :(得分:2)

按位重载和:

的示例
class Archive {
public:
   std::ostream& operator&( std::ostream& out ) {
       return out << to_string();
   }
   std::string to_string() { return "a string"; }
};

答案 1 :(得分:0)

对于非内置类型,您可以在C ++中定义操作符行为。

有关详细信息,请参阅C++ FAQ