在c ++中初始化指针

asa*_*007 2 c++ pointers reference

我开始学习C++和指针.但是我在初始化时有点困惑.根据我的理解,如果我有一些类X,以下代码是有效的:

X* pointer = new X();
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,因为我希望你想通过给它一个对象的地址来初始化一个指针,而不是对象本身,如:

X* pointer = &(new X());
Run Code Online (Sandbox Code Playgroud)

C++会自动将前者转换为后者吗?谢谢.

Vla*_*cow 11

Operator new返回创建的对象的地址.它不会返回对象本身.

您也可以使用对创建对象的引用.例如

X &x = *( new X() );
//...

delete &x;
Run Code Online (Sandbox Code Playgroud)