【发布时间】:2014-07-04 05:38:54
【问题描述】:
我不是 C++ 程序员,我非常尊重它的复杂性,所以我通常会远离它。尽管如此,我还是找到了一个我想修改的库。
该库包含一个示例 sn-p,其中在本地范围内分配了一个实例:
Foo foo(arg1, arg2, ...);
我想修改这个例子来重新初始化对象并用它做更多的事情,但我不能通过 getter/setter 或公共变量来做。在不创建更多实例的情况下这是否可能?
如果不创建新实例就无法做到这一点,我如何释放不再需要的对象的内存?
例如,如果它是一个动态对象,我想它会是这样的:
Foo* pfoo;
pfoo = new Foo(arg1, arg2, ...);
pfoo->doSomething();
delete pfoo;
pfoo = new Foo(arg3, arg4, ...);
pfoo->doSomething();
delete pfoo;
堆栈中分配的对象的等价物是什么?
【问题讨论】:
-
“重新初始化”对象是什么意思?我假设你的意思是再次调用构造函数,但是你提到了一些关于 getter/setter 的东西。这是Calling a constructor to re-initialize object 的可能重复项吗?
-
您的两个选择是 setter/getter 或制作一个全新的对象。既然你说不能用前者,那你就得新建一个对象
Foo foo2(arg3, arg4, ..) -
c++的方式是一个对象做一件事。你不能只创建两个对象吗?
-
@MisterSmith:你的第二个例子通常是糟糕的风格。您不会在 C++ 中“重用”这样的指针。您只需创建第二个指针,除非您在极其特殊的环境中或使用非常笨拙的遗留代码开发软件。
标签: c++ object constructor stack