ホームページ > バックエンド開発 > C++ > オーバーロードするとなぜ

オーバーロードするとなぜ

Linda Hamilton
リリース: 2024-12-27 00:00:13
オリジナル
852 人が閲覧しました

Why Does Overloading the

「<<」のオーバーロードostream の演算子

「<<」をオーバーロードしようとするときC で ostream の演算子を使用すると、「エラー: 'std::ostream& Math::Matrix::operator<<(std::ostream&, const Math::Matrix&)' は引数を 1 つだけ取る必要があります。」というエラーが発生する場合があります。これは混乱を招く可能性があるため、ここで問題と解決策の詳細な説明を示します。

演算子のオーバーロードは 'std::ostream& 演算子<< として定義されています。 (std::ostream& ストリーム、const マトリックス & マトリックス)'。ご覧のとおり、この関数は 2 つの引数を受け取ります。ただし、エラー メッセージには、1 つだけを持つ必要があることが示されています。これは、デフォルトで「<<」が使用されるためです。演算子は、ストリーミングされるクラスのメンバー関数です。したがって、最初の引数は暗黙的にストリーミングされるオブジェクトになります。この演算子をオーバーロードする場合、最初の引数を 'ostream&' として明示的に指定する必要があります。

解決策は、オーバーロードの最初の引数として 'void' を追加することです。これは、演算子がメンバー関数ではなくフレンド関数であることを示しています。

修正されたコードは次のとおりです:

namespace Math
{
    class Matrix
    {
    public:
        friend std::ostream&amp; operator<< (std::ostream&amp; stream, const Matrix&amp; matrix) {
            [...]
        }
    };
}
ログイン後にコピー

以上がオーバーロードするとなぜの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート