c++ -- 静态建立与动态建立对象的区别

分类:在C++中类的对象建立分为两种:

  • 一种是静态建立,如A a;
  • 另一种是动态建立,如A* p=new A();

静态建立一个类对象,是由编译器为对象在栈空间中分配内存,通过移动栈顶指针扩展适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象,结束后自动释放空间。
动态建立类对象,是使用new运算符将对象建立在堆空间中,在栈中只保留了指向该对象的指针。堆中通常保存程序运行时动态创建的对象,C++堆中存放的对象需要由程序员分配释放,它存在程序运行的整个生命期,直到程序结束由操作系统释放。
优缺点: 静态分配缺少灵活性,它需要在程序执行之前就知道所需内存的类型和数量。一般来说,存储未知数目的元素需要动态内存分配的灵活性。
用法: 使用时在栈上创建对象时,实参位于对象名后面,例如Student stu(“小明”, 15, 92.5);在堆上创建对象时,实参位于类名后面,例如new Student(“李华”, 16, 96)。

发布了166 篇原创文章 · 获赞 45 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44116998/article/details/104152873