类内声明静态变量:

// static_variable.h
class a
{static int var;
};// static_variable.cpp
#include "static_variable.h"
int a::var = 2;

说明 :
1、static变量必须在类方法文件(cpp)初始化,且初始化时不加static。因为声明文件为头文件,头文件内初始化可能会有多个文件包含,引发重定义。
2、类的静态变量属于整个类共有,所有类对象共用,存储静态区。
3、对于静态变量(除const静态成员外),类定义内部的那个叫引用性声明(即使可以类内写初始化代码)。其与类是一个级别的,因此类中静态变量必须在类外定义,与全局变量一样存储静态区。

类内常量:
1、示例

//头文件.h
class a {const int monsts = 12; // C++11才有效:类内初始化//C++11前需要使用构造函数的初始化列表a():months(12) {}
};

C++11前不能使用原因 :类声明只描述结构,类对象定义前没有内存空间用于存储,只有定义了才有空间存放。

注:头文件内class外可以定义const常量,内部链接性(本文件可用),为定义常量专门设计的。详解

//头文件.h
const int a =2;

2、示例(static const 为类对象共有)

//.h
class a {static const int monst1 = 12;static const double monst2;enum{ month3 = 12;   }
};//.cpp
const double a::monst2 = 12.2;

正确原因 :
1、static const成员的类内初始化仅新编译器支持,且只允许对整形常量初始化,对于非整形常量使用类外初始化。
2、静态区存储,常量,所有对象共享。
3、由于表示常量,因此枚举不需要定义类型名。
但两者区别为:enum枚举只能定义整数,static const 可以定义浮点数。

参考资料:
C++ Primer Plus:第12.1.1节 428页 与 10.6.1节 371页
C++ —— 类中static和const关键字声明变量的初始化方式总结

类内如何声明静态变量,常量问题相关推荐

  1. php在类定义一个我静态变量,php中静态类与静态变量用法的区别分析_PHP教程

    php中静态类与静态变量用法的区别分析 static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了. 1. 创建对象$object = ...

  2. static方法不能直接访问类内的非static变量和不能调用this,super语句分析

    大家都知道在static方法中,不能访问类内非static成员变量和方法.可是原因是什么呢? 这首先要从static方法的特性说起.static方法,即类的静态成员经常被称为"成员变量&qu ...

  3. c语言staticint的作用,C语言 static 声明静态变量?大佬原来用它干这事!

    原标题:C语言 static 声明静态变量?大佬原来用它干这事! C语言可变参数只会用算啥本事?看我来抽丝剥茧干翻它! 高手在写代码的时候,会特别注重的一点就是,对外的方法对外,不对外的方法和数据,都 ...

  4. C语言 static 声明静态变量?大佬原来用它干这事!

    C语言可变参数只会用算啥本事?看我来抽丝剥茧干翻它! 高手在写代码的时候,会特别注重的一点就是,对外的方法对外,不对外的方法和数据,都是让其对外不可见,也就是俗称的,内部不想让别人直接访问的方法,变量 ...

  5. iOS 在类实现定义中声明成员变量的怪异方式

    WebGL 规范(WebGL Specification) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&quo ...

  6. C/C++中静态变量

    C/C++中的静态变量 1. 静态全局变量 2.静态局部变量 3. 静态函数 4.类内静态成员变量 5. 类内静态局部变量 6.类内静态函数 C语言中与"静态"相关的词包括,静态全 ...

  7. php父类的静态变量,抽象父类中的PHP静态变量:问题是在示例代码中!

    问题的快速代码包括: abstract class ClassParent { public static $var1 = "ClassParent"; } class Class ...

  8. php载入内存的是本地代码吗,常量和静态变量会先载入内存后在进行执行php代码...

    static $test=1;//在php执行前就已经写入内存 $test++; var_dump($test); static $test=10;//在php执行前就已经写入内存 var_dump( ...

  9. java 静态变量生命周期(类生命周期)

    java 静态变量生命周期(类生命周期) Static: 加载:java虚拟机在加载类的过程中为静态变量分配内存. 类变量:static变量在内存中只有一个,存放在方法区,属于类变量,被所有实例所共享 ...

最新文章

  1. golang goroutine 协程原理
  2. curl 支持ws吗_curl 支持 http2
  3. AS插件-Android Drawable Importer
  4. Spring 原理初探——IoC、AOP
  5. 可信平台模块(TPM)概念介绍
  6. PIE SDK矢量数据编辑的撤销和回退
  7. 安全问题汇总(二) SlowHttp 慢速攻击防护
  8. 微软警告员工不要参与愚人节恶作剧
  9. Networking UVALive - 2515 (最小生成树,适合kruskal)
  10. 4. 木马病毒和免杀技术,另一种免杀思路
  11. Android 如何测试你的Base64是否正确展示
  12. 安装cad提示command_win7系统安装CAD软件失败总是提示“错误1327”怎么解决
  13. 【程序员如何买基金 八】筛选优秀的债券基金
  14. 项目管理-成熟度模型、量化项目管理
  15. 第九章 情归情理归理 好话丑话最好都说在前面
  16. PowerQuery的参数表格用法
  17. Python中Django与Echarts的结合用法
  18. python中的middle_Python wx.EVT_MIDDLE_DCLICK属性代码示例
  19. C++(25)——STL
  20. html js滚轮事件,Js滚轮事件

热门文章

  1. 高效运维的本质:可视化的服务交付和可视化的服务度量
  2. 【论文翻译 - RFID】射频全息图:利用商业化产品对移动射频标签进行实时高精度追踪
  3. swift 学习资料大全
  4. 汽车后市场O2O的掘金点在供应链金融
  5. 使用CMAKE和交叉编译工具链
  6. 关于简书签约作者饱醉豚违反简书社区原则的公示说明
  7. 素描初学者入门教程素描高手分享经…
  8. SpringCloud-5-Hystrix
  9. php扩展geoIP的使用
  10. SendMessage函数