Mis*_*ith 2 c++ stack constructor object
我不是C++程序员,我非常尊重它的复杂性,所以我通常会远离它.尽管如此,我还是找到了一个我想修补的图书馆.
该库包含一个示例代码段,其中单个实例在本地范围内分配:
Foo foo(arg1, arg2, ...);
Run Code Online (Sandbox Code Playgroud)
我想修改这个例子来重新初始化对象并用它做更多的事情,但我不能通过getter/setter或公共变量来做.如果没有创建更多实例,这可能吗?
如果没有创建新实例就无法做到这一点,我怎么能释放我不再需要的对象的内存?
例如,如果它是一个动态对象,我猜它会是这样的:
Foo* pfoo;
pfoo = new Foo(arg1, arg2, ...);
pfoo->doSomething();
delete pfoo;
pfoo = new Foo(arg3, arg4, ...);
pfoo->doSomething();
delete pfoo;
Run Code Online (Sandbox Code Playgroud)
堆栈中分配的对象的等价物是什么?
释放自动变量的唯一方法是让它们超出范围:
void bar() {
Foo f1(arg1, arg2);
f1.doSomething();
{
Foo f2(arg3, arg4);
f2.doSomething();
// other stuff ...
// f2 dies here.
}
{
Foo f3(arg5, arg6); // allocated on stack, possibly overlapping f2's old spot
f3.doSomething();
// ...
// f3 dies here.
}
// f1 dies here.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |