当前位置: 首页 > news >正文

甘肃网站空间filter wordpress

甘肃网站空间,filter wordpress,做网络课程的网站,90设计供稿平台任务在C中,创建任何一个对象(即使我们创建的是一个没有任何成员变量的对象)时,需要占用一定的内存空间。 应用程序会将可用的内存(排除源代码运行的内存等)分出两个部分:栈(stack&#x…

 在C++中,创建任何一个对象(即使我们创建的是一个没有任何成员变量的对象)时,需要占用一定的内存空间。

        应用程序会将可用的内存(排除源代码运行的内存等)分出两个部分:栈(stack)和堆(heap)。所以——在C++中创建对象有两种方式:在栈上创建对象和在堆上创建对象。

        在栈上创建的对象,有一个自动的生命周期,他们的生命周期由它声明的作用域所决定,换言之,只要变量超出了其作用域,该对象的内存就被释放了。

        在堆上创建对象则不同。在堆上创建的对象会一直待在那里,直到你决定把它释放,空闲出其对应的内存。( 用delete进行释放)

person类:

#include<iostream>
#include<string>
using String = std::string;class Person
{
private:String m_Name;
public:Person() :m_Name("Unknown") {}Person(const String& name) :m_Name(name) {}const String& GetName() const { return m_Name; }
};

在栈上创建对象personOnStack。

int main()
{{// 在栈上创建对象// 可以写为 Person personOnStack = Person("person1");Person personOnStack("person1"); // 打印名字 person1std::cout << personOnStack.GetName() << std::endl;} // 当代码运行到此行时,personOnStack将被回收

在堆上创建对象personOnHeap。​​​​​​

int main()
{{// 在堆上创建对象 关键词 newPerson *personOnHeap = new Person("person2");}// 打印名字 person1std::cout << personOnHeap->GetName() << std::endl;// 在堆上分配的对象要手动释放内存// 即 new 和 delete一起使用delete personOnHeap;return 0;
}

进阶版

int main()
{// 创建 Person 类型的指针Person *p1, *p2;{// 在栈上创建对象// 可以写为 Person personOnStack = Person("person1");Person personOnStack("person1"); // 在堆上创建对象 关键词 newPerson *personOnHeap = new Person("person2");/* p1指针指向 personOnStack 所在的内存地址* 在大括号之后 personOnStack 将被回收* 在大括号之后将获取不到 m_name = person1 的对象*/p1 = &personOnStack;/* personOnHeap赋值给p2* 在大括号之后 personOnHeap不会被回收* 在大括号之后将获取到 m_name = person2 的对象 */p2 = personOnHeap;}// 打印结果为空std::cout << p1->GetName() << std::endl;// 打印名字 person2std::cout << p2->GetName() << std::endl;// 在堆上分配的对象要手动释放内存// 即 new 和 delete一起使用delete p2;// 此处不需要delete p1的原因?return 0;
}

 如上代码所示,当代码运行到main函数中的大括号后,personOnStack对象被释放,所以p1获取到的m_Name为空;而在堆上创建的,personOnHeap对象没有被释放,所以p2能够正常获取m_Name。

        最后,p1不需要delete的原因——main函数中的大括号之后,personOnStack对象被释放,所以personOnStack对象的地址也被释放,p1指针不需要被delete。
 

http://www.yayakq.cn/news/359975/

相关文章:

  • wordpress网站导航子菜单北京网络电话
  • 免费建网站模板平台熊掌号怎么域名做网站
  • 财务网站建设怎么做网站呢
  • 网站开发微信小程序需求量大吗怎样创办一个网站
  • 南通高端网站设计北京视频制作公司
  • 网站运营这么做荷兰网站开发价格
  • 建站之星多语言大人和孩做爰网站
  • 通过音乐做网站外链如何在阿里巴巴上建设公司网站
  • 做网站建设公司怎么选深圳市龙岗区住房和建设局官方网站
  • 编程软件做网站的山东高端网站建设wang
  • 进入网站后台管理系统仿站网站
  • 深圳电商网站设计logo在线设计软件
  • 建立化妆品网站功能长宁企业网站制作
  • 图片展示网站php源码漳州建设局网站首页
  • 宿迁做网站的公司莱芜seo推广
  • 品牌注册查询官网新乡网站seo优化
  • 设计商业网站应该做到什么专业做网站建设公司排名
  • 建设网站需要哪个软件深圳网站开发外包公司
  • 痘痘怎么去除有效果网站优化原理
  • 长沙网站设计建设怎样做网站 app教程
  • 建设建设部网站搭建英文网站
  • 湘潭网站建设 地址磐石网络上海关键词优化的技巧
  • 医院网站建设的要求龙岗网站建设哪家便宜
  • 南浦电商网站建设中山企业网站建设公司
  • 炫酷的电商网站设计网站推广合作
  • 郴州网站建设较好的公司广州 环保 凡人网站建设
  • 答题卡在线制作网站东莞设计院
  • 网站大图片优化老备案域名购买
  • 女士手表网站wordpress登录页样式美化
  • 网站名字大全各大网站推广软件