+
または-
のような演算子はどこに定義されていますか?組み込み演算子はどこに定義されていますか?
E.G. +
というコードは、2つのアイテムをまとめて追加するという意味のコードはどこにありますか?
thisで読んでいましたが、標準ライブラリセクションの基本1 + 1 = 2
ケースを見てはいけません。これの例は「Additive Operators」セクションに示されていますが、関数定義の場所を見つけることはできません。
+
または-
のような演算子はどこに定義されていますか?組み込み演算子はどこに定義されていますか?
E.G. +
というコードは、2つのアイテムをまとめて追加するという意味のコードはどこにありますか?
thisで読んでいましたが、標準ライブラリセクションの基本1 + 1 = 2
ケースを見てはいけません。これの例は「Additive Operators」セクションに示されていますが、関数定義の場所を見つけることはできません。
コンパイラは、これらの操作のコードを生成します。これらの操作は、標準ライブラリの一部ではありません。コンパイラには、生成されたアセンブリ言語コードを調べるオプションがほとんどあります。
これはコンパイラによって機械命令に行うことができます。必ずしも基本的な算術演算を定義する必要はありませんか? –
@pasta基本的な算術演算の動作は、コンパイラのコードで定義されています。 –
演算子のオーバーロード時に 'operator'構文と同じですか?私は、標準ライブラリにいくつかの 'operator +'が定義されていることを知っていますが、コンパイラが "演算子"とそれに続くASCII値のシーケンスを見たときに、 "演算子"という用語がどこに定義されていますか? –
これは言語自体の一部です。コンパイラは、文字列 "c = a + b;"を翻訳します。 bに格納されている値にaに格納されている値を加算し、その結果をcに設定します。
まだ、私は関数定義の場所を見つけることができません。
は全く関数定義、単純なアセンブリ命令セットがあるではないかもしれません:C++で
mov 1,r1
mov 5,r2
add r1,r2
、何operator+(int,int)
はありません。加算演算子は組み込みであり、それに対応する関数はありません。特に、あなたはこれを行うことはできません。
using intDyadic = int(*)(int, int);
intDyadic add = operator+(int,int);
は対照的に、あなたは標準ライブラリを含むライブラリで定義されたオペレータのオーバーライドへの関数ポインタを作成することができます。
"組み込み"が何を意味するのかを判断しようとしていたと思います。それはどこかでコード化されなければなりません!そして明らかにどこかにコンパイラコードがあります。 –
@pasta_sauce:これは実装に大きく依存します。浮動小数点ユニットを持たない最小限のハードウェアでの実装には、おそらく浮動小数点演算をエミュレートするライブラリが含まれているため、コンパイラによって生成されたコードにはこれらの関数への呼び出しが含まれます。そのため、関数が存在する可能性があり、ランタイムライブラリの一部である可能性があります(標準C++の他の部分は通常、プログラムにリンクされたライブラリを通じて実装されます)。 – rici
_ "「+」は2つのアイテムをまとめて追加することを意味するコードはどこに表示されますか?」_放出されたアセンブリコード。実際にあなたが尋ねていることは不明です。 –
これは基本的な操作です。どのように定義されるのでしょうか?タートルズは一番下にありますか? – harold
@Harold演算子に 'operator +'をオーバーロードする必要があると思ったと思います。 "基底"演算子+は左と右の値を加えた関数を持っていると想像してください。 –