1. 概念

1.1 概念

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态的成员变量一定要在类外进行初始化

1.2 特性

  1. 静态成员为所有类对象所共享不属于某个具体的实例
  2. 静态成员变量必须在类外定义,定义时不添加static关键字
  3. 类静态成员即可用类名::静态成员或者对象.静态成员来访问
  4. 静态成员函数没有隐藏的this指针,不能访问任何非静态成员
  5. 静态成员和类的普通成员一样,也有public、protected、private3种访问级别,也可以具有返回值

##代码示例

#include<iostream>
using namespace std;class A{public:A() {++_scount;}A(const A& t){++_scount;}static int GetACount(){return _scount;}private:static int _scount;
}; int A::_scount = 0;
int main(){cout << A::GetACount() << endl;cout << A::GetACount() << endl;A a1;cout << a1.GetACount() << endl;A a2;cout << a2.GetACount() << endl;A a3(a1);cout << A::GetACount() << endl;return 0;
}

运行结果

0
0
1
2
3--------------------------------
Process exited with return value 0
Press any key to continue . . .

2. C++11 的成员初始化新玩法

C++11支持非静态成员变量在声明时进行初始化赋值,但是要注意这里不是初始化,这里是给声明的成员变
量缺省值。

非静态成员变量,可以在成员声明时给缺省值。

#include<iostream>
#include<cstdlib>
using namespace std;
class B{public:B(int b = 0):_b(b){}int _b;
};
class A{public:void Print(){cout << a << endl;cout << b._b << endl;cout << p << endl;}private:int a = 10;B b = 20;int* p = (int*)malloc(4);static int n;
};int A::n = 10;int main(){A a;a.Print();return 0;
}

C++中static成员相关推荐

  1. C++与C# 中static 成员变量的区别

    C#中 类的静态成员变量(m_Number)可以通过非静态的成员函数(GetNumber().SetNumber())访问 这样,在外部,就可以new 一个类对象,通过调用该对象(sv)的GetNum ...

  2. C++ class中的静态(static)成员

    C++ class中的静态(static)成员 (1)       静态数据成员 ①一般地静态数据成员在该类定义之外被初始化,如同一个成员函数被定义在类定义之外一样.在这种定义中的静态成员的名字必须被 ...

  3. C++与Java中的static成员总结

    简述 在结构化程序设计中,内存中数据的共享是通过参数, 全局变量实现的; 在面向对象程序设计中函数与数据成员封装在一起, 数据共享通过类内部数据成员之间的相互访问, 外部对象则通过静态成员(即stat ...

  4. Java接口中的成员变量为什么必须是static ?

    接口的含义 接口就是提供一种统一的协议, 而接口中的属性也属于协议中的成员.它们是公共的,静态的,最终的常量.相当于全局常量. 在interface里面的变量都是public static final ...

  5. C++中的static 成员变量的一些注意点

    C++中的static成员变量主要用来为多个对象共享数据 例: #include <iostream> using namespace std; class Student{ public ...

  6. Java接口中的成员变量为什么必须声明为public static final?

    我想对于每个Java程序员来说,接口都不陌生,接口中的方法也经常使用.而接口中的成员变量,就显得用得少一点, 而对于成员变量为什么必须声明为public static final,可能就更不清楚了,而 ...

  7. C++类中的static数据成员,static成员函数

    文章转自:http://www.cnblogs.com/gysm/archive/2011/09/16/2179277.html 版权归原作者. C++类中谈到static,我们可以在类中定义stat ...

  8. C++ 类中的static成员的使用及单例设计示例

    文章目录 static 静态成员变量 static静态成员函数 单例设计模式 单例实现图片资源的封装(很实用) 静态成员:被static修饰的成员变量\函数 可以通过对象(对象.静态成员).对象指针( ...

  9. 类中static变量和成员变量

    类中static变量和普通变量的区别(一便解释了摘要中的内容) ​ 要理解标题,我们首先来看下static变量本身的特殊之处,即它存储在全局数据区.在类中的static变量也是如此. C++的内存分布 ...

最新文章

  1. Android热更新方案Robust
  2. 【Python】如何用Python来操作PDF文件,建议收藏
  3. Swift-函数的理解
  4. dbms_job涉及到的知识点
  5. java2的7次方怎么表示_静态市盈率要怎么看?
  6. 数据结构树的基本操作_树的各类基本操作(数据结构)
  7. python结课设计力学方面_我对力学教案的评价
  8. linux操作系统下建用户,如何用Linux操作系统批量建立用户的shell
  9. 你经历过最奇特的梦境是怎样的?
  10. [AX]AX2012 AIF(五):使用文档服务更新数据
  11. processing一个作品_当你触摸到一束光| 交互灯光装置课程学员作品回顾
  12. R语言:企业风险分析(2)【蒙特卡罗模拟,Monte-Carlo Simulation】
  13. N76E003替换STM8S003F3
  14. 用cocos studio生成plist文件
  15. Nginx-配置大全
  16. A Question of Ingestion(Dp)
  17. 超级应用/_超级应用
  18. window操作系统下的句柄机制说明
  19. ubuntu 制作本地源 离线安装
  20. C语言前驱后驱字母表示,汽车中的前置后驱(FR)、前置前驱(FF)、后置后驱(RR)、中置后驱(MR)、4轮驱动(4WD),分别为什么概念?...

热门文章

  1. 主机厂对紧固件扭矩质量的控制方法——SunTorque智能扭矩系统
  2. SVN回滚/回退到某个版本
  3. 当全球可耕种面积只剩20%,“垂直农业”能否拯救全人类?
  4. wordpress主题修改_更改WordPress主题的10个步骤指南
  5. 强化学习和知识图谱实体对齐
  6. ValueAnimator 中文翻译
  7. 一种LED吸顶灯关灯后微量的故障解决办法
  8. 以王者荣耀为例,教你将一天的时间用成28小时
  9. html如何判断文本框是否为空,javascript怎么判断文本框是否为空?
  10. 苹果6换屏多钱_自贸区专业苹果6换个外屏多少钱