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

扬州市做网站珠宝购物网站的建设

扬州市做网站,珠宝购物网站的建设,wordpress 人力资源,上海大公司目录 前言 01 在堆栈上创建对象 02 堆栈上创建对象有什么区别 03 在栈上实例化对象 04 在堆中实例化对象 前言 本章我们讨论一下 C 创建对象的相关问题。 如果你还不了解什么是类#xff0c;可以点击下文查看 P9 C类-CSDN博客 本章以下主要讲解以下几点 在栈上创建对象… 目录 前言 01 在堆栈上创建对象 02 堆栈上创建对象有什么区别 03 在栈上实例化对象 04 在堆中实例化对象 前言 本章我们讨论一下 C 创建对象的相关问题。 如果你还不了解什么是类可以点击下文查看 P9 C类-CSDN博客 本章以下主要讲解以下几点 在栈上创建对象在堆上创建对象堆栈上创建对象有何区别delete删除对象避免内存泄漏。 01 在堆栈上创建对象 C 给了我们一些创建对象的方法。当我们写完一个类然后开始使用我们创建的类除非它是完全静态的不然我们需要实例化这个类。 创建类对象的方式有两种这两种方法之间的区别是内存主要是 从哪里来的在哪里创建对象。 当我们创建一个 C 对象时它需要占用一些内存即便我们写一个完全为空的类类中没有成员它至少也要占用一个字节的内存。 通常情况下类中会有很多成员它们存储在某些地方当我们使用这个对象的时候会创建一堆变量会需要在电脑的某个地方分配内存这样就可以记住这些变量设置的值。 程序会将内存主要分为两部分栈和堆当然还有其它部分的内存如源代码的区域这些都是机器代码 02 堆栈上创建对象有什么区别 在 C 中我们选择对象要放在哪里是在栈上还是堆上创建有不同的功能差异 栈对象它有一个自动的生存周期它们的生存期实际是由它声明的地方作用域决定的只要变量超出作用域相应的内存就被释放了因为当作用域结束的时候栈会弹出作用域里面的东西栈上的任何东西都会被释放。 但堆是不同的一旦在堆中分配一个对象它会一直呆在那里直到你做出决定——我不再需要它了我想释放这个对象你想怎么处置那段内存都行。 我们来看看这两种创建对象的方法的代码是什么样子的。 class Animal { private:std::string m_name; int m_age;double m_weight; public:void setName(std::string pname) {m_name pname;}void getName(){std::cout m_name std::endl;} }; 上面的代码案例是一个叫做 Animal的类它只有一个字符串成员m_m_name一个整形m_age双精度m_weight以及一个简单的 setName 方法和getName方法。 接下来在主函数中分别用两种方式创建这个类的实例。 03 在栈上实例化对象 第一种方法是在栈上创建它调用了默认构造函数可以通过调用它的 setName设置对象的名字getName 方法打印它的 m_Name运行代码可以得到 Dog。 我们可以在几乎所有的场景下使用上面的创建方式如果能这样创建就尽量这样创建这就是最基本的规则。 04 在堆中实例化对象 那什么时候在堆中实例化对象呢 如果你想把 Animal放在这个函数生存期之外比如有一个函数你想在函数开始的位置创建对象在函数结束的位置把它在内存中销毁那就在栈上创建对象即可但如果你想让它的生命周期延长你就应该在堆中实例化对象了但如果这个 Animal的规模太大而且我们可能有太多的 animal我们可能没有足够的空间在栈上分配因为栈通常非常小大概1、2M。 以上的两种情况下就可能必须在堆上进行分配下面是具体的操作。 首先先改变它的类型然后使用 new 关键字new Entity 会返回这个 entity 在堆上被分配的内存地址。 简单来说在堆上分配要比栈花费更长的时间而且在堆上分配内存的话必须手动释放被分配的内存所以一旦在堆上分配了内存空间我们需要使用 delete 来释放这些内存。 所以不是所有的情况都要采取在堆上分配空间。 这就是我们创造对象的两种方法那么如何选择呢你可以参考这些标准。 如果对象太大或者你要显式地控制对象的生存期那就在堆上创建其它情况基本可以选在栈上分配。在栈上创建速度很快而且全程自动化而在堆上创建会稍微繁琐而且还有一个巨大的风险即如果你忘记delete有可能会造成内存泄漏。 当然你也可以使用智能指针它基本集合了两种方法的优势超出作用域还会被自动删除还是比较好用的之后的系列中应该会讲到。 测试代码 #include iostreamclass Animal { private:std::string m_name; int m_age;double m_weight; public:void setName(std::string pname) {m_name pname;}void getName(){std::cout m_name std::endl;} };int main() {Animal animal;animal.setName(Dog);animal.getName();Animal *animal1 new Animal;animal1-setName(Cat);animal1-getName();delete animal1;return 0; }
http://www.pierceye.com/news/222795/

相关文章:

  • 百度做网站教程网站建设与维护ppt
  • 化妆品网站建设方案做咩有D网站响网吧上不了
  • 网站 迁移房地产销售基础知识大全
  • 门户网站建设汇报材料网站开发与制作中期报告
  • 网站建设可以自己弄吗知乎做网站必须要服务器吗
  • 怎么制作自己的小程序专业seo整站优化
  • 做网站是干什么用的苏宁易购网站上的营销页面
  • 浪网站制作网站开发是无形资产
  • 做阿里巴巴网站可以贷款吗seo如何快速排名百度首页
  • 公司做网站都咨询哪些问题网站平台建设视频教学
  • 西安电子商务网站建设网站里面的链接怎么做
  • 郑州陆港开发建设有限公司网站58招商加盟项目
  • 徐州高端网站建设个人网站设计首页界面
  • 山西企业建站系统平台关键词 优化 网站
  • 地板网站建设方案有什么做美食的网站
  • 网站建设丶金手指专业网站幻灯片 字段
  • 网站开发技术总结干完房产中介整个人废了
  • iis建站安装wordpress对网站建设的评价语
  • 网站开发网站建设公司二手房网
  • 72建站网如何建设一个药材网站做网站的费用 可以抵扣吗
  • 四川通信建设工程有限公司网站做企业网站需要服务器么
  • 福田建网站费用烟台招远网站建设
  • 上海网站开发建设电话丹东市做网站
  • 外贸网站 免费模板 使用 zencart做新闻类网站
  • 呼和浩特网站推广大德通网站建设
  • 携程旅行网站建设上海城市建设大学网站
  • 360网站收录做网站设计用什么软件
  • 微信html5模板网站最新网站建设软件有哪些
  • 芝麻开门网站建设无极电影网怎样下载电影
  • 网站开发 书籍首页关键词优化价格