問題タブ [call-by-value]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - コピー コンストラクターの呼び出しを避けるべき 2 つのケース
コピー コンストラクターの呼び出しに関する 3 つのケースについて学びました。
1. 変数が同じクラスのオブジェクトから初期化されている
2. クラスの値パラメーターで関数が呼び出される
3. 関数がクラスのオブジェクトである値を返す
また、教科書では、上記の 2 つのケース (case2 と 3) について、コピー コンストラクターの呼び出しを避けるために、参照渡しを使用すると述べています。
いくつかの情報を検索しましたが、正確には理解できません。
例(私は自分のコードを作りました)
これについていくつかの情報を見つけました。
まず、クラスオブジェクトである引数を渡すとき、引数が値ではなく参照形式の場合、関数が終了するとすぐにデストラクタを呼び出しません。メイン関数の終了時にデストラクタを呼び出します
次に、パラメーター形式が値による呼び出しか参照による呼び出しかに関係なく、引数をコピーするときにコンストラクターを呼び出します (コードでは、String &s または String s)。
私は正しいですか?
c++ - C ++で再帰を使用しているときに2次元配列を渡すことができません
関数に aを渡す方法について、 stackoverflowで回答を見ました2d-array
。そのうちの 1 つを試してみると、3 つ以上のメソッドが指定されていて、問題なく動作しました。しかし、バックトラックでそのメソッドを使用しようとすると、エラーが発生します。
グローバルに宣言してみましたが、このように使用する方法を学びたいです
エラー: int(*)[5] から int [-fpremissive] への無効な変換