【发布时间】:2013-12-09 13:16:14
【问题描述】:
说我有这样的课程
class foo
{
private:
std::string str;
int a;
poo* p;
public:
foo
{
p = new poo();
}
void someMethod() {....}
}
现在我想知道我是否走以下路:
foo* f = new foo();
或
foo f;
变量str、a 和p 在每种情况下会在哪里创建?成员变量是否受类创建方式的影响?例如,我认为str 和a 将在堆栈上创建,p 将在堆上创建。如果有人能解决这个问题,我将不胜感激..
【问题讨论】:
-
我理解那部分。在堆或栈上创建会影响内部成员变量
-
@MistyD 是的。
-
不要将指针
p与其指向的poo对象混淆。前者是foo对象的一部分,后者始终是单独的堆分配。 -
想象一下如果将成员放入堆栈然后函数返回会发生什么。
标签: c++