はです。A()
で新しいオブジェクトを作成します。
有効ですか?
はいです。
もしそうなら、私は新しいオブジェクトやオブジェクトを使用しなかったので、どのようにインスタンス化しましたか?
new
は、ダイナミックメモリにオブジェクトを作成するだけです。オブジェクトを自動メモリに作成しています。また、オブジェクトに名前を付けなかったからといって、オブジェクトが作成されているわけではありません。この
思う:
int foo() { return 1; }
int main()
{
foo();
}
が脇最適化を残しfoo()
は、実際に1
を返していましたか?はい、そうでした。あなたはそれを使用していないだけです。
EDIT:
のは少しそれを打破してみましょう:
A(); //creates a temporary unnamed object in automatic storage
A a; //creates an object a of type A in automatic storage
A a(); //creates no object, but declare a function a returning A and taking no parameters
A a(A()); //these two are equivalent
A a = A(); //creates a temporary unnamed object and creates an object a in automatic storage
//using the compiler-generated copy constructor
A a;
a = A(); //creates an object a in automatic storage
//creates an unnamed temporary object and uses the compiler-generated assignment operator
//to assign it to a
A a = &A(); //invalid, &A() is the address of a temporary a, which is illegal
何かをインスタンス化しないと、 'A();'はどうなると思いますか? – Mat
@Matええ、** new **なし、それは私の疑問です – Dewsworld