タグ付けされた質問 「new-operator」

14
JavaScriptの「新しい」キーワードとは何ですか?
newJavaScript のキーワードは、JavaScriptはオブジェクト指向プログラミング言語ではないと考える傾向があるため、最初に出会ったときは非常に混乱する可能性があります。 それは何ですか? それはどのような問題を解決しますか? いつそれが適切でいつ適切でないのですか?

18
C ++プログラマーが「新規」の使用を最小限に抑える必要があるのはなぜですか?
私がつまずいスタックオーバーフロー質問のstd ::リストを使用しているときのstd ::文字列を使用してメモリリーク<はstd :: string>に、そしてコメントの一つは、この言います: 使用を中止newそんなに。どこで新しいものを使ったのか、私にはわかりません。C ++では値によってオブジェクトを作成できます。これは、この言語を使用することの大きな利点の1つです。 すべてをヒープに割り当てる必要はありません。Javaプログラマーの ように考えるのをやめます。 それが何を意味するのかよくわかりません。 C ++でオブジェクトをできるだけ頻繁に値で作成する必要があるのはなぜですか。また、内部的にどのような違いがありますか? 答えを誤解しましたか?

19
どのような場合にmallocやnewを使用しますか?
私はC ++でデータを割り当てたり解放したりする方法が複数あることを理解しています。呼び出すmallocときは呼び出す必要がfreeあり、new演算子を使用するときはペアにする必要がdeleteあり、2つを組み合わせるのは誤りです(たとえば、free()作成されたものの呼び出し)newオペレータ)が、私は私が使用する必要があるときにクリアしていないよmalloc/ free私が使用する必要があるときにnew/ delete私の本当の世界のプログラムで。 C ++のエキスパートの場合は、この点に関して従う経験則や慣例を教えてください。


14
テンプレート型のC#ジェネリックnew()に引数を渡す
リストに追加するときに、コンストラクターを介してT型の新しいオブジェクトを作成しようとしています。 コンパイルエラーが発生する:エラーメッセージは次のとおりです。 'T':変数のインスタンスを作成するときに引数を提供できません しかし、私のクラスにはコンストラクター引数があります!どうすればこれを機能させることができますか? public static string GetAllItems<T>(...) where T : new() { ... List<T> tabListItems = new List<T>(); foreach (ListItem listItem in listCollection) { tabListItems.Add(new T(listItem)); // error here. } ... }

9
{}またはnew Object()を使用してJavaScriptで空のオブジェクトを作成しますか?
JavaScriptで空のオブジェクトを作成するには、2つの方法があります。 var objectA = {} var objectB = new Object() スクリプトエンジンがそれらを処理する方法に違いはありますか?どちらか一方をもう一方を使用する理由はありますか? 同様に、別の構文を使用して空の配列を作成することもできます。 var arrayA = [] var arrayB = new Array()

11
C ++で新しいキーワードを使用する必要があるのはいつですか?
しばらくC ++を使用していて、新しいキーワードについて疑問に思っていました。単に、私はそれを使うべきか、そうでないのか? 1)新しいキーワードで... MyClass* myClass = new MyClass(); myClass->MyField = "Hello world!"; 2)新しいキーワードなし... MyClass myClass; myClass.MyField = "Hello world!"; 実装の観点からは、それらはそれほど異なっていないように見えます(しかし、確かに違います)...しかし、私の主要言語はC#であり、もちろん最初の方法は私が慣れているものです。 問題は、方法1がstd C ++クラスで使用するのが難しいことです。 どの方法を使用する必要がありますか? 更新1: 私は最近、スコープから外れる(つまり、関数から返される)大きな配列のヒープメモリ(またはfree store)に新しいキーワードを使用しました。以前はスタックを使用していたため、要素の半分がスコープ外で破損していましたが、ヒープの使用に切り替えることで、要素が正常に機能するようになりました。わーい! アップデート2: 私の友人は最近、newキーワードを使用するための簡単なルールがあると私に言った。タイプするたびにnew、タイプしてくださいdelete。 Foobar *foobar = new Foobar(); delete foobar; // TODO: Move this to the right place. これは、常に削除をどこかに置く必要があるため(つまり、切り取りしてデストラクタなどに貼り付ける場合)、メモリリークを防ぐのに役立ちます。

12
C#の既定のブラウザーで開く方法
私は小さなC#アプリケーションを設計していますが、その中にWebブラウザーがあります。現在、コンピューターにすべてのデフォルトがあり、google chromeがデフォルトのブラウザーであると言っていますが、アプリケーションのリンクをクリックして新しいウィンドウで開くと、インターネットエクスプローラーが開きます。代わりに、これらのリンクをデフォルトのブラウザで開く方法はありますか?または、私のコンピュータに何か問題がありますか? 私の問題は、アプリケーションにウェブブラウザがあることです。Googleに移動して「スタックオーバーフロー」と入力し、最初のリンクを右クリックして[新しいウィンドウで開く]をクリックすると、ChromeではなくIEで開きます。これは私が不適切にコーディングしたものですか、それとも私のコンピュータに正しくない設定がありますか? ===編集=== これは本当に迷惑です。ブラウザがIEであることはすでに知っていますが、以前は問題なく動作していました。リンクをクリックすると、Chromeで開きました。c#expressを起動できなかったため、その時点でアプリケーションを作成するためにシャープ開発を使用していました。私は新しいWindowsのインストールを行いましたが、アプリケーションにそれほど遠くないので、最初からやり直すことにしましたが、今はこの問題が発生しています。それが自分のコンピューターかどうかわかりません。なぜデフォルトのブラウザーで新しいリンクを開くのではなく、リンクをクリックしたときにIEがブラウザー全体を起動するのですか?


10
これは削除できますか?
delete this;delete-statementがクラスのそのインスタンスで実行される最後のステートメントである場合、許可されますか?もちろん、this-pointerで表されるオブジェクトは、newly-created だと確信しています。 私はこのようなことを考えています: void SomeModule::doStuff() { // in the controller, "this" object of SomeModule is the "current module" // now, if I want to switch over to a new Module, eg: controller->setWorkingModule(new OtherModule()); // since the new "OtherModule" object will take the lead, // I want to get rid …

6
「new」演算子を使用してオブジェクトを作成するときに、括弧を省略できますか?
この方法でオブジェクトが作成されるのを見てきました。 const obj = new Foo; しかし、オブジェクトを作成するときに括弧はオプションではないと思いました: const obj = new Foo(); オブジェクトを作成する以前の方法は有効であり、ECMAScript標準で定義されていますか?以前のオブジェクト作成方法と後者の方法に違いはありますか?どちらが優先されますか?

14
新規とオーバーライドの違い
次の違いは何ですか? ケース1:基本クラス public void DoIt(); ケース1:継承されたクラス public new void DoIt(); ケース2:基本クラス public virtual void DoIt(); ケース2:継承されたクラス public override void DoIt(); ケース1と2はどちらも、私が実行したテストに基づいて同じ効果があるようです。違いはありますか、それとも望ましい方法ですか?


8
C ++の新しい演算子でメモリを初期化する方法は?
私はC ++を始めたばかりで、いくつかの良い習慣を身につけたいと思っています。私はちょうど型の配列を割り当てられている場合intとnewオペレータ、どのように私はそれらをすべて自分自身をループせずに0にそれらのすべてを初期化することができますか?私は使うべきmemsetですか?それを行う「C ++」の方法はありますか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.