2

コンパイラーにオブジェクトをキャストできるかどうかを調べさせ、それを単独で実行させるのではなく、 static_cast を使用すると、コンパイル時間が短縮されるかどうか疑問に思っています。約。私が話している3000行のC++コード。例えば:

stack< const something*> myStack;
// ...
myStack.push(/* not const */ something*) 

対。

stack< const something*> myStack;
// ...
myStack.push(static_cast< const something*>(something*)). 

私は大学で ada 言語を学びましたが、それ以来、キャストを行うべきか、コンパイラーに任せるべきかについて少し混乱しています。

4

2 に答える 2

0

いいえ、コンパイル時間は節約されません。

その理由を理解するには、次のことを考慮してください。

auto i = /* some expr */;

対:

int i = /* some expr */;

どちらの場合も、コンパイラが最初に行う必要があるのは、 の型を計算することですsome expr。次に、 のauto場合は基本型が の型であると単純に見なし、i2 番目のケースで基本型が でない場合intは、有効な変換があるかどうかを確認します。

型を明示的に指定するかどうかに関係なく、コンパイラ式の型を計算し、発生する変換 (暗黙的かどうか) が許可されているかどうかを確認する必要があります。

したがって、あなたは役に立たず、コードを乱雑にすることで、自分自身と同僚にとってコードが読みにくくなっています。

于 2013-04-13T12:32:07.067 に答える