*」と「.*」。"/> *」と「.*」。">
C オーバーロードできない演算子は次のとおりです: 1. 条件演算子 "?:"; 2. メンバー アクセス演算子 "."; 3. ドメイン演算子 "::"; 4. 長さ演算演算子 "sizeof"; 5. メンバ ポインタ アクセス演算子「->*」および「.*」。
関連する推奨事項: 「C ビデオ チュートリアル 」
オーバーロード: 演算子が変更するのではなく、新しいセマンティクスを持つことができるようにします。構文が異なるため、混乱が生じます。
オーバーロードのルールの一部: 操作関数の少なくとも 1 つのパラメーターは、クラスのオブジェクト、またはクラスのオブジェクトへの参照である必要があります。
C にはオーバーロードできない演算子が 5 つあります:
"?:" (条件演算子)
"."(メンバーアクセス演算子)
"::"(フィールド演算子)
"sizeof"(長さ演算子)
(1)“?:”
exp1 ? exp2 : exp3この演算子の意味は、exp2 と exp3 のいずれかを実行することです。オーバーロードされている場合、1 つ、2 つ、あるいはどちらも実行されないという保証はありません。この演算子のジャンプ プロパティは存在しなくなります。 。したがって、「?:」をオーバーロードすることはできません。
(2)"."
class Y{ public: void fun(); }; class X{ public: Y* p; Y& operator.(){ return *p; } void fun(); } void g(X& x){ x.fun(); }この例では、x.fun() はどの fun 関数が呼び出されるのかを知りません。
「.」演算子の意味はオブジェクトのメンバーを参照することですが、オーバーロードされた後はこれが保証されなくなり、演算子の意味について混乱が生じます。
(3)“::”
(4)"sizeof"
(5)"->*" および ".*"
プログラミング入門をご覧ください。 !
以上がオーバーロードできない C++ 演算子はどれですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。