-2

これと何が違うのか聞きたい

Tv *television = new Tv();

Tv television = Tv();
4

1 に答える 1

5

最初のものは、動的に割り当てられた を作成し、Tvそれを へのポインタにバインドしますTv。オブジェクトの持続時間はTvあなたの制御下にあります。オブジェクトを呼び出すことで、オブジェクトをいつ破棄するかを決定しますdelete

new Tv(); // creates dynamically allocated Tv and returns pointer to it
Tv* television; // creates a pointer to Tv that points to nothing useful
Tv* tv1 = new Tv(); // creates dynamicalls allocated Tv, pointer tv1 points to it.

delete tv1; // destroy the object and deallocate memory used by it.

2 つ目は、コピーの初期化によって自動的に割り当てられる を作成します。オブジェクトの持続時間は自動です。言語のルールに従って、たとえばスコープを終了すると、決定論的に破棄されます。TvTv

{
  // copy-initializaiton: RHS is value initialized temporary.
  Tv television = Tv(); 
} // television is destroyed here.

「スコープの終了」は、オブジェクトを含むクラスのオブジェクトの寿命の終わりを指す場合もありTvます。

struct Foo {
  Tv tv;
}

....
{
  Foo f;
} // f is destroyed, and f.tv with it.
于 2012-09-22T15:44:46.270 に答える