我遇到过一个我以前没见过的构造,我想知道它的目的是什么:
{
SomeClass &a = *new SomeClass(...);
a.someFunc();
}
如果我的理解是正确的,a
是对SomeClass
的引用,并且是通过new
创建的。这有什么用途?即,为什么这不能写成SomeClass a(...)
?此外,此代码泄漏内存吗?我的猜测确实如此,因为new
被调用而没有匹配的delete
。
答案 0 :(得分:2)
这有什么用途?
Stack Overflow上的Rep生成。或许有人故意试图被解雇。
为什么不能将它写成SomeClass a(...)
应该是。
此外,此代码是否会泄漏内存?我的猜测确实如此,因为
new
被调用而没有匹配的delete
。
是的,确实。
答案 1 :(得分:0)
这表明SomeClass
是一个奇怪的非标准对象,只能在堆上创建,不能在堆栈上创建,或者静态创建。因此,您应该注意SomeClass
所做的其他奇怪的事情:
它可能会在其构造函数中创建一个新线程来接管对象的所有权。
对象的某些方法可能会在某些时候隐式删除它。
尽管如此,这可能表明SomeClass
被严重错误设计,可能试图封装用其他编程语言编写的某些行为。