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

乐清建站公司阿克苏网站建设价格

乐清建站公司,阿克苏网站建设价格,建设银行人力资源系统网站首页,科技网站首页当我们如下声明了一个类: class A{public:static int sti_data;// 这个语句在c11前不能通过编译,在c11的新标准下,已经能够在声明一个普通变量是就对其进行初始化。int a 10;static const int b 1;//...其他member };// 在类外…

当我们如下声明了一个类:

class A{public:static int sti_data;// 这个语句在c++11前不能通过编译,在c++11的新标准下,已经能够在声明一个普通变量是就对其进行初始化。int a = 10static const int b = 1;//...其他member
};// 在类外定义静态成员变量并分配内存
int A::sti_data = 10;

上述的类只是声明了而已,并不是在系统中实际存在,要使用一个类,必须在系统中分配内存,也就是实例化出一个对象,比如:

int main () {A a;
}

为了明白为什么类的非const静态变量一定要在类的外边定义:

  • 首先,需要搞清楚,文件中的类A的写法只是声明类A实现形式,在我们没有实例化一个类对象前,系统中不存在分配给类A的内存。同理,我们实例化了N个类A的对象,系统分配了N个A大小的内存。
  • 其次,静态数据成员是一个类共有的,而不是一个对象独有,整个程序中只有一份静态数据成员的内存。
  • 假如,我们不对静态成员变量进行与普通成员变量不同的处理,而是一样能在类的声明里事先定义并初始化好静态成员变量(也就是声明时给定一个初始值,等真正实例化一个对象时便用事先给定的初始值初始化这个变量):static int sti_data = 1;,这意味着,每个我们实例化的类对象,都存在一个分配给静态成员变量的内存,这将导致在内存中存在多个同名的静态变量,这与静态变量的唯一性矛盾,必然编译不通过。
  • 从实现来看,编译器确实能做到,每次实例化一个类对象时判断类中的静态变量是否已经定义过,但很显然,这么做的成本太高,还不如直接强制要求不能在类中对非const静态变量进行定义并初始化,而是只能声明。
  • 至于为什么const静态变量能够在类内直接定义,因为static const 成员变量会被编译器优化,为编译期常量,编译器不会为其分配内存,更像是宏定义那样,在编译期时,在使用它的地方,用它的值替换它,这一点可以通过代码看到,若我们在类中定义一个static const 成员变量,我们可以打印出它的值,却不能打印出它的地址,因为编译器并没有给它分配内存。
  • 因此,c++要求,非const静态变量一定要在类外定义。

为什么(普通或类的)函数里的静态变量能够事先初始化
这个问题主要时为了与第一个问题进行对比,加深理解。
原因很简单,每个的函数,无论是否静态,是否是成员函数还是普通函数,程序在编译时,会给每个函数分配内存,同时一个函数在程序里只有一份内存,这与类在实例化一个对象时才分配内存是有本质上的区别的。这时,对于函数的静态变量而言,只需要把静态变量的内存分配到静态区就能做到在程序的生命周期里不随着函数的调用而被构造或者销毁。

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

相关文章:

  • 昆明百度智能建站建设部的网站
  • 花都定制型网站建设开发公司个人工作总结
  • 手绘风网站杭州网络公司网站
  • 自己建网站做网店乡村建设规划网站
  • wordpress多站模式西安短视频拍摄制作公司
  • 提供手机网站建设网络经营网址怎么注册
  • 备案号 不放在网站上宁波网站建设风格
  • 餐饮酒店网站建设网站 医院信息化建设
  • 做游戏网站要备案吗邢台经济开发区
  • 河北邯郸移动网站建设wordpress 4.2.20
  • 网站功能有哪些黑马程序员培训怎么样
  • 没有备案的网站怎么访问不了自己做网站模板
  • 东莞英文网站设计做一个简单网站多少钱
  • 三明鑫龙建设工程网站做网站移交资料
  • 苏州企业建站公司网址ip地址域名
  • 模仿做网站建网站带支付链接
  • 做网站的专业叫啥网站设置支付宝在线支付
  • 邢台做网站优化费用xp配置网站服务器
  • 服装企业微网站建设网站建设公司的流程
  • 长沙网站seo推广网站设计制作全网优惠
  • 网站导航字体大小wordpress 禁止 字体
  • 天站网站建设优酷土豆网站建设
  • 集团官方网站建设方案上海网站设计网页设计
  • 网站建设 广州佛山tamed wordpress插件
  • 做推广网站公司wordpress for sae 下载
  • html 网站源码 卖手机全国装饰100强排名
  • 长春网站排名推广物流网站开发项目书
  • 网站后台管理系统进不去怎么办网络系统集成结课论文
  • 忘记网站备案账号wordpress不显示作者评论
  • 人力资源公司网站建设方案凡科建站如何制作论坛