ホームページ > バックエンド開発 > C++ > C では関数の一時引数はどのくらいの期間存続しますか?

C では関数の一時引数はどのくらいの期間存続しますか?

DDD
リリース: 2024-12-27 07:06:17
オリジナル
940 人が閲覧しました

How Long Do Temporary Function Arguments Live in C  ?

関数の一時引数の有効期間を理解する

以下に例を示すように、関数の引数としてインスタンス化された一時オブジェクトを利用する場合:

class MyClass
{
  MyClass(int a);
};

myFunction(MyClass(42));
ログイン後にコピー

それらの破壊の動作を理解することは非常に重要です。 C 標準は、デストラクタのタイミングについての洞察を提供します。

一時引数の破棄タイミング

一時オブジェクトは、それらが存在する完全な式の終了時に終了します。完全な式は、別の式の中にネストされておらず、単独で存在する式を意味します。通常、これはステートメントの完了を指定するセミコロン (または、条件付き、ループ、および switch ステートメントの右括弧) に対応します。指定された例では、完全な式は関数呼び出しで終了します。

テンポラリの存続期間の延長

テンポラリの存続期間は、テンポラリを一定の参照。この戦略により、その寿命が参照の寿命と一致するまで延長されます:

MyClass getMyClass();

{
  const MyClass& r = getMyClass(); // full expression ends here
  ...
} // object returned by getMyClass() is destroyed here
ログイン後にコピー

この手法を使用すると、MyClass obj = getMyClass(); を使用する場合と比較して、不必要なコピー コンストラクターの呼び出しを回避し、パフォーマンスを最適化できます。ただし、その普及率はやや低いです。

以上がC では関数の一時引数はどのくらいの期間存続しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート