static

对于特定类类型的全体对象而言,访问一个全局对象有时是必要的。也许,在程序的任意点需要统计已创建的特定类类型对象的数量;或者,全局对象可能是指向类的错误处理例程的一个指针;或者,它是指向类类型对象的内在自由存储区的一个指针。
然而,全局对象会破坏封装:对象需要支持特定类抽象的实现。如果对象是全局的,一般的用户代码就可以修改这个值。类可以定义类 静态成员,而不是
定义一个可普遍访问的全局对象。
通常,非 static 数据成员存在于类类型的每个对象中。不像普通的数据成员,static 数据成员独立于该类的任意对象而存在;每个 static 数据成员是与类关联的对象,并不与该类的对象相关联。

例如,考虑一个简单的表示银行账户的类。每个账户具有余额和拥有者,并且按月获得利息,但应用于每个账户的利率总是相同的。可以按下面的这样编写这个类

class Account {
public:
// interface functions here
void applyint() { amount += amount * interestRate; }
static double rate() { return interestRate; }
static void rate(double); // sets a new rate
private:
std::string owner;
double amount;
static double interestRate;
static double initRate();
};

static成员函数

当我们在类的外部定义 static 成员时,无须重复指定 static 保留字,该保留字只出现在类定义体内部的声明处。

static 成员是类的组成部分但不是任何对象的组成部分,因此,static 成员函数没有 this 指针。

static成员变量

static 数据成员必须在类定义体的外部定义(正好一次)。不像普通数据成员,static 成员不是通过类构造函数进行初始化,而是应该在定义时进行初始化。

// define and initialize static class member
double Account::interestRate = initRate();

  • 类的对象共享其静态成员变量的值
  • 静态成员变量可被该类的所有方法访问
  • 类的静态方法只能访问该类的静态成员变量
  • 类的静态数据成员变量的值可修改

转载于:https://www.cnblogs.com/wangzhuazhua/p/4784232.html

2015.09.05 C++中类的static与const成员相关推荐

  1. C++中static与const成员

    一.static成员 (1)static数据成员 static数据成员的创建是为了对象之间的共享和沟通,具有以下特点: 1.1 static数据成员属于类,只占一份空间(不像普通数据成员每个对象中都有 ...

  2. C语音static、const、voilate和位运算

    目录 一 static 1 在C语言中 2 在C++中,多了以下两点 3 静态数据成员可以成为成员函数的可选参数,普通数据成员不可以 4 静态数据成员的类型可以是所属类的类型,普通数据成员不可以 5 ...

  3. 心情日志 —— 2015/09/09

    title: 心情日志 -- 2015/09/09 date: 2015/9/9 21:00:00 categories: 心情日志 tags: [心情日志] 2015/09/09 Wed 武汉 26 ...

  4. 小区规划开发商想妻子的谎言改就能改(图)2015年05月02

    本文最新发表于:2015年05月02日11时05分07秒 楼层高矮.容积率大小.车位和绿地多少--住宅楼盘规划关系业主切身利益,但一些业主买房入住后,收现小区已改了规划.变了模样- 本报记者 贾学蕊 ...

  5. 计算机系统招标范围,信息化系统招标文件(2015.09.16最终稿1).doc

    信息化系统招标文件(2015.09.16最终稿1) 鸡西市.七台河市供水(干线)工程 联合调度与运行管理决策支持系统 招标设计 技术规范 水利水电勘测设计研究院 二○一五年九月 目 录 1 工程概况1 ...

  6. [2015/09/08] Unity3D飞机大战(简陋版) Practice

    自己学的还是太差,进度很慢,不停地查各种资料. 1  2D背景实现自动滚动 1.1 插入2D背景 直接插入图片就好,我还在想sprite到底是用来做什么的-- 3D摄像头改为2D,Orthograph ...

  7. 菜鸟网络工程师的成长笔记——第19天(2016.09.05)

    菜鸟网络工程师的成长笔记--第19天(2016.09.05) 不知道要有多久的浸润,才能算是精通web全栈开发 30.前端的日期选择插件 问题类型:前端 解决状态:已解决 问题描述 日期选择是web上 ...

  8. 类中static、const、readonly、partial修饰符

    static 修饰类成员: static在C#中的用法与C++类似,当声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个静态成员的副本,static变量可在成员函数或类的定义外部进行 ...

  9. C语言中auto,register,static,const,volatile的区别

    1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是aut ...

最新文章

  1. shell之for和if实现批量替换多目录下的文件
  2. uboot小工具之mkimage
  3. linux定时器回调处理过程,Linux内核系统定时器TIMER实现过程分析
  4. 【Vue】Vue入门 -(本地篇+网络篇)代码示例及运行效果
  5. 人工智能系统研究的9大挑战和4大趋势
  6. RestTemplate.getForObject返回List的时候处理方式
  7. 【译】数据显示:中国的程序员是世界上最牛的程序员?
  8. 北美电影票房Top10-2019年12月27日:《小妇人》表现亮眼
  9. Matlab画图程序
  10. 10个常用的数据分析商业模型之波特五种竞争力模型(一)
  11. 1960-2018年世界各国GDP排名变化--Python动图实现
  12. 用Python分析经纬度数据
  13. 模电——多级放大电路的耦合方式
  14. 迅为3A5000_7A2000开发板龙芯全国产处理器LoongArch架构核心方案
  15. ORACLE11g R2 for Linux 下载地址
  16. 虚拟人实时互动之基于Android驱动表情随动
  17. 小而巧的数字压缩算法:zigzag
  18. MBA案例分析(行销与营销之行销五)
  19. 3次根号如何用python表达_python怎么表示根号运算
  20. unll是什么意思_null什么意思

热门文章

  1. Gentle.NET 使用文档
  2. CVPR 2021 底层视觉最新进展分享
  3. YOLOv5 的妙用:学习手语,帮助听力障碍群体
  4. 【TensorFlow】TensorFlow函数精讲之tf.contrib.layers.flatten()
  5. 港中文开源 | 融合视频目标检测与单目标、多目标跟踪
  6. 解决Python中sum函数出现的TypeError: unsupported operand type(s) for +: 'int' and 'list'错误问题
  7. 精华文稿 | 工业场景中机器人定位导航技术
  8. 深度隐式表达系列 (一)
  9. 设计模式 过滤器模式
  10. 基于Tkinter和百度Aip的人体关键点检测