C++访问栈和堆对象成员
访问栈和堆对象成员
你已经了解到,C++中既可以在栈上也可以在堆上创建对象。然而,这两种方法还有一点微妙但是很重要的区别,即访问成员变量和成员函数的方式稍有不同。
使用栈对象时,你需要点运算符(.);使用堆对象时,你需要使用箭头操作符(->)。如下:
Person stackPerson;
stackPerson.name = “Bob Smith”; //< Setting a member variable
stackPerson.doSomething(); //< Calling a member function
Person *heapPerson = new Person();
heapPerson->name = “Bob Smith”; //< Setting a member variable
heapPerson->doSomething(); //< Calling a member function
区别很微妙,但是值得注意。
栈里面的内存会自动释放,而堆内存需要自己处理,在开发过程中需要严格注意内存的释放问题。