ホームページ >バックエンド開発 >C++ >仮想`を定義する方法

仮想`を定義する方法

DDD
DDDオリジナル
2024-10-26 19:12:03905ブラウズ

How to Define a Virtual `

仮想の克服 <<オペレータ エラー

仮想 << を定義しようとしたとき演算子を無料関数として使用すると、開発者はコンパイラ エラー「演算子 <<: メンバー関数とベースのみを仮想にすることができます。」が発生する可能性があります。このエラーは、自由関数を仮想化できないために発生します。

この問題を解決するには、クラス内に新しい仮想メンバー関数を導入して中間層を追加することを検討してください。

<code class="cpp">class MyClass {
public:
    virtual void print(ostream&amp; where) const;
};</code>

この仮想関数は、次の機能を提供します。サブクラスの出力動作をカスタマイズする手段です。

次に、演算子<<を定義します。正しいパラメータ順序を持つ自由関数として:

<code class="cpp">ostream&amp; operator<< (ostream&amp; out, const MyClass&amp; mc) {
    mc.print(out);
    return out;
}</code>

このアプローチにより、演算子<<が確実に実行されます。サブクラスで仮想動作を定義できるようにしながら、必要なパラメーターの順序を持​​ちます。

以上が仮想`を定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。