如我所见,new
在免费存储区中分配了一个未命名的对象,并返回了一个指向该未命名对象的指针。
因此我们可以创建对该对象的引用:
int* pi = new int(100);
int& ri = *pi;
我感兴趣的是,我可以在免费商店中创建一个对象,而无需通过将new
的取消引用值分配给该引用,而无需将new
的返回值分配给一个指针,而是将其分配给该未命名对象的引用:
int& x = *(new int(7));
cout << x << endl; // 7
x += 34;
cout << x << endl; // 41
感谢您提出任何建议,暗示或建议。 N.B:实际上,我尽量避免使用智能指针和STL容器来处理原始内存...
是,可以。但是我认为这是一个坏主意。一旦该引用超出范围,您将无法释放动态内存(或者您只是忘记了,它是变相的动态内存),这很可能会导致内存泄漏。