我在c ++书中读到,我们可以使用c ++中的各种类实例。
例如:
class Person {
public:
Person();
Person(std::string name, int age){
}
};
//This will be created in the stack
A : Person John("John",68);
//This will be created in the heap
B : Person *Marcel("Marcel",31);
那么,为什么当我们使用指针(A)创建对象时使用堆以及为什么在B中,它将使用堆栈?
答案 0 :(得分:1)
首先,让我们更正语法:
int main()
{
Person John("John",68); //statement 1
Person *Marcel = new Person("Marcel",31); //statement 2
....
}
Person
的指针,并为其分配堆上的类Person
的实例,因为它是动态分配的。因此,指针(即保存类实例地址的变量)驻留在堆栈上,但实际的实例是在堆上分配的。我希望这可以解决问题,如果没有,我建议回到基础并查找指针。