C++9

举报
chenyu 发表于 2021/07/26 23:23:50 2021/07/26
【摘要】 C++类和new、delete操作符 在C++中,你可以像定义变量一样来创建对象,如: Student stu;  //对象已被实例化,已分配内存空间,可以使用了 stu.say();  //调用成员函数 这种情况下,系统会在栈区为对象分配内存。栈区是内存中的一块区域,由系统自动分配和释放,程序员无法操控,一般用来存放函数的参数值...

C++类和new、delete操作符

在C++中,你可以像定义变量一样来创建对象,如:
Student stu;  //对象已被实例化,已分配内存空间,可以使用了
stu.say();  //调用成员函数
这种情况下,系统会在栈区为对象分配内存。栈区是内存中的一块区域,由系统自动分配和释放,程序员无法操控,一般用来存放函数的参数值、局部变量、局部对象等。


当发生函数调用时,系统将函数参数、局部变量、局部对象依次压入栈区;函数执行结束,再按照先进后出的原则将它们弹出(销毁)。


对于大部分程序,这不会有什么问题。但当你希望在函数调用结束前销毁对象时,你是无能为力的。或者你希望通过 for 循环来创建多个对象,这种方法同样也做不到。


这个时候 new 和 delete 就派上了用场:使用 new 创建的对象,可以在任意时刻通过 delete 销毁,而且只需要一个指针指向它。


以前面的 Student 类为例,可以这样来动态创建对象:
new Student;
也可以使用构造函数:
new Student("小明", 15, 90.5f);
这样,就在堆区为对象分配了内存,并调用了构造函数。


但是此时程序员还无法访问这个对象,因为这个对象既没有名字,也没有指针指向它。这种对象称为匿名对象,它确实存在,但无法访问。

<

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/50621113

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。