可能重复:
为什么你想要在堆而不是堆栈上分配内存?
Test2 *t2 = new Test2();
t2->test();
Test2 t3;
t3.test();
Run Code Online (Sandbox Code Playgroud)
为什么我要创建Test2类型的指针对象?为什么不做Test2的非指针版本?我为什么要做指针对象?
在这里找到答案:
AnT*_*AnT 20
使用动态存储的原因包括(但可能不限于)
如果没有区别,最好使用您的t3
方法创建对象.除非必须,否则不要使用动态内存.但有时你真的必须(见上面的原因).
如果你需要一个对象比它创建的范围更长,那么其中一个解决方案就是在堆上创建它.在这种情况下,您需要一个指针.还有其他原因,这是最常见的.
使用指针的另一个原因是"out"参数.当然,你可以使用引用,但许多人更喜欢使用指针,因为它避免了在调用站点修改参数.foo(var);
VSfoo(&var);
此外,指针可用于传递或返回可能存在或不存在的对象.例如:T *foo(); // returns a pointer to an object or NULL if none exists
.
这个清单一直在继续.
归档时间: |
|
查看次数: |
25019 次 |
最近记录: |