operators
提供:cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
目次 |
[編集] 演算子のオーバーロード
[編集] 構文
type operator op ( params ) ;
|
|||||||||
[編集] 説明
- <type>は/変数のタイプ(複数可)ですさ.Original:<type> is/are the type(s) of the variables.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - <op>には、特定の演算子(例えば
+、+=、<<、>>、&&、||、%など)です.Original:<op> is the particular operator (e.g.+,+=,<<,>>,&&,||,%, etc.).The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - は、<params>は/必要なパラメータ(オペレータに依存します)の名前(s)です.Original:<params> is/are the name(s) of the required parameters (depends on the operator).The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[編集] 制限
- あなたは
**または&|などの新しい演算子を作成することはできません.Original:You cannot create new operators such as**or&|.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - すべての演算子はオーバーロードできませんOriginal:Not all operators can be overloadedThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - いくつかの演算子は、非静的クラスのメンバとしてオーバーロードすることができますOriginal:Some operators can only be overloaded as non-static class membersThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 短絡評価はオーバーロードされた演算子では動作しませんOriginal:Short-circuit evaluation doesn't work with overloaded operatorsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[編集] オペレータコール
オーバーロードされた演算子は通常の中置記法を使って呼び出すことができます
Original:
Overloaded operators can be called using the usual infix notation
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
a+bや関数のような表記
Original:
or a function-like notation
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
operator+(a,b)
[編集] 例
#include <iostream> using namespace std; class Fraction{ private: int numerator, denominator; public: Fraction(int n, int d): numerator(n), denominator(d) {} // Note that the keyword operator combined with an actual // operator is used as the function name friend ostream& operator<<(ostream&, Fraction&); }; ostream& operator<<(ostream& out, Fraction& f){ out << f.numerator << '/' << f.denominator; return out; } int main(){ Fraction f1(3, 8); Fraction f2(1, 2); cout << f1 << endl; cout << 3 << ' ' << f2 << endl; return 0; }
Output:
3/8 3 1/2
[編集] も参照してください
| Common operators | ||||||
|---|---|---|---|---|---|---|
| 代入 | incrementNJdecrement | 算術 | 論理 | 比較 | memberNJaccess | 他の |
|
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
| Special operators | ||||||
|
static_cast別の互換性のあるタイプ
に1型に変換します Original: static_cast converts one type to another compatible type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. dynamic_cast派生class
に仮想基底クラスに変換します Original: dynamic_cast converts virtual base class to derived class The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. const_cast異なるcvqualifiers
と互換性のある型に型変換されます Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. reinterpret_cast互換性type
に型を変換します Original: reinterpret_cast converts type to incompatible type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. new割り当てmemory
Original: new allocates memory The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. delete割り当て解除memory
Original: delete deallocates memory The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. sizeoftype
のサイズを照会します Original: sizeof queries the size of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. sizeof...パラメーターパック(C + + 11以来)
のサイズを照会します Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. typeidtype
の型情報を照会します Original: typeid queries the type information of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. noexcept式が例外(C + + 11以来)
を投げることができるかどうかをチェックします Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. alignofタイプ(C + + 11以来)のクエリアラインメント要件を
Original: alignof queries alignment requirements of a type (C + + 11以来) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | ||||||