0

私は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;

&演算子の目的は、コメントを読むことで非常に明確です。私が知りたいのは、それはどのように達成されるのですか?「&」が何を意味するのかをどうやって知るのでしょうか?Googleでアンパサンド演算子の使用法をさらに検索しましたが、検索できるのは、操作ではなく参照を示すために使用されているものだけです。

ありがとう。

4

2 に答える 2

2

ビット単位のオーバーロードの例-そして:

class Archive {
public:
   std::ostream& operator&( std::ostream& out ) {
       return out << to_string();
   }
   std::string to_string() { return "a string"; }
};
于 2012-07-16T04:25:18.040 に答える
0

非組み込み型の場合、C++で演算子の動作を定義できます。

詳細については、C++FAQを参照してください。

于 2012-07-16T06:34:36.507 に答える