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

河南网站建设哪里有asp网站文章自动更新

河南网站建设哪里有,asp网站文章自动更新,网站后台安装,网站模板演示创建并初始化C对象 当我们创建一个C对象时#xff0c;它需要占用一些内存#xff0c;即使我们写一个完全为空的类#xff0c;类中没有成员#xff0c;什么也没有#xff0c;它至少也要占用一个字节的内存。但是我们类中有很多成员#xff0c;它们需要存储在某地方#…创建并初始化C对象 当我们创建一个C对象时它需要占用一些内存即使我们写一个完全为空的类类中没有成员什么也没有它至少也要占用一个字节的内存。但是我们类中有很多成员它们需要存储在某地方当我们决定开始使用这个对象时我们会创建一堆变量对象有一堆变量我们需要在电脑的某个地方分配内存这样我们就可以记住这些变量设置的值。 应用程序会将内存主要分为两部分栈和堆还有其他部分的内存比如源代码的区域。 在C中我们要选择对象要放在哪里对象是在栈上还是在堆上创建它们有不同的功能差异。 栈栈对象有一个自动的生存期他们的生存期实际上是由它声明的地方的作用域决定的只要变量超出作用域也就是说内存被释放了,因为当作用域结束的时候栈会弹出作用域里面的东西栈上的任何东西会被释放。 堆一旦在堆中分配一个对象实际上你已经在堆上创建了一个对象它会一直待在那里直到你做出决定确定不需要它想要释放这个对象那怎末处理这段内存都行。   代码案例 在栈上创建  在什么时候在栈上创建对象 几乎所有的时候如果你能像这样在栈上创建对象那就像这样创建对象因为这是C中最快的方法也是可以管控的方法去初始化对象 某些情况下不能这么做的原因? 1、如果将实例化对象放到main函数的生存期外 void Function(){int a 2;Entity entity;} 一旦到达函数结尾的花括号这个entity会从内存中被销毁 当我们在main函数中调用Function时就为这个函数创建了一个栈结构它包含了我们声明的所有局部变量其中包括基本类型也包括我们的类和对象,当函数结束时栈帧会被销毁即栈上所有的内存所有创建的变量都消失了 如果想让括号{}内的实例化对象在作用域之外依然存在就不能分配到栈上需要使用堆分配。 2、如果entity的规模太大可能有太多的entity,可能没有足够的空间在栈上分配因为栈通常非常小通常是1M/2M # include iostream # include string using namespace std;class Entity { private:string m_Name; //只有一个成员是一个字符串 public:Entity() : m_Name(Unknown) {}Entity(const string name) : m_Name(name) {}const string GetName() const { return m_Name; } };int main() {// 1、在栈上创建Entity entity; // 实际上调用了默认构造函数Entity() : m_Name(Unknown)cout entity.GetName() endl;Entity entity1(chen);// 等价于 Entity entity1 Entity(chen)cout entity1.GetName() endl;/*在什么时候在栈上创建对象几乎所有的时候如果你能像这样在栈上创建对象那就像这样创建对象因为这是C中最快的方法也是可以管控的方法去初始化对象某些情况下不能这么做的原因?1、如果将实例化对象放到main函数的生存期外void Function(){int a 2;Entity entity;}一旦到达这个花括号这个entity会从内存中被销毁当我们调用Function时就为这个函数创建了一个栈结构它包含了我们声明的所有局部变量其中包括基本类型也包括我们的类和对象,当函数结束时栈帧会被销毁即栈上所有的内存所有创建的变量都消失了Entity* e;{Entity entity2(cherno);e entity2;cout entity2.GetName() endl;} 一旦出了{}作用域就到达了栈端entity2对象就已经不存在了如果想让括号{}内的实例化对象在作用域之外依然存在就不能分配到栈上需要使用堆分配cin.get();return 0; } 在堆上创建 在堆上创建首先要做的就是在改变类型将Entity改成Entity*,通过new关键字这里最大的区别不是那个类型变成了指针而是new关键字new关键字是关键。 Entity* entity new Entity(cherno);当我们调用new Entity时会在栈上分配内存调用构造函数这个new Entity实际上会返回一个Entity*,它会返回entity在堆上被分配的内存地址。 使用new关键字必须调用delete释放内存 delete 变量名delete entity; 性能问题在堆上分配要比栈花费更长的时间而且在堆上分配的话您必须手动释放被分配的内存 # include iostream # include string using namespace std;class Entity { private:string m_Name; //只有一个成员是一个字符串 public:Entity() : m_Name(Unknown) {}Entity(const string name) : m_Name(name) {}const string GetName() const { return m_Name; } };int main() {// 2、在堆上创建/*在堆上创建首先要做的就是在改变类型将Entity改成Entity*,通过new关键字这里最大的区别不是那个类型变成了指针而是new关键字new关键字是关键当我们调用new Entity时会在栈上分配内存调用构造函数这个new Entity实际上会返回一个Entity*,它会返回entity在堆上被分配的内存地址*/Entity* entity new Entity(cherno);//释放内存//delete 变量名delete entity;/*性能问题在堆上分配要比栈花费更长的时间而且在堆上分配的话您必须手动释放被分配的内存*/cin.get();return 0; } 创建对象的两种方法如何选择 如果对象太大或者需要显示地控制对象的生存期那就是用堆创建其他情况就是用栈创建。
http://www.hkea.cn/news/14472427/

相关文章:

  • 大连营销型网站建设程序员 给老婆做网站
  • 现代农业建设 乡网站南宁市建筑规划设计集团有限公司
  • 昆山自适应网站建设做h5的免费软件
  • 做漫画网站eclipse网站开发流程
  • 网站建设用哪个软件抖音推广联盟
  • 国内设计欣赏网站网站目录不能访问
  • 网站怎么做导航栏多少钱可以炒股
  • 第五冶金建设公司职工大学网站typecho用Wordpress插件
  • 专业网站制作公司采用哪些技术制作网站?官网做有下拉列表的网站的图片
  • 铜陵app网站做营销招聘信息网络维护公司简介
  • 东莞网站建设-信科网络wordpress 视频外链
  • 营销型网站建设的要素深圳市建设管理中心网站
  • 电子商务网站建设与维护论文深圳市建工建设集团有限公司官网
  • 网站域名空间费用二级学院网站建设整改方案
  • 口碑好的网站建设方法有哪些做网站先学美工
  • 求一个dw做的网站哈密北京网站建设
  • 在家做私房菜的网站谷歌搜索指数查询
  • 网站开发的专业能力网站iis7.5配置
  • 销售营销网站南京专业网站制作公司
  • 国外的设计网站appseo网络推广公司
  • 昆明网站建设_云南网站建设做任务的阅币漫画网站
  • 手机单页网站生成系统书店网站策划书
  • 山西做网站的公司织梦怎么建设论坛网站
  • 国外做电商网站有哪些教育平台小程序
  • 什么网站可以用视频做背景网站建设竞价托管什么意思
  • 建设个人博客网站网站怎么做自适应
  • 智慧团建官方网站登录入口网站建设费计入无形资产
  • 蛋糕网站建设金乡网站建设公司
  • 网站建设公司价位创新设计
  • 那些网站可以上传自己做的视频百度一下首页版