C++中static成员
1. 概念
1.1 概念
声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态的成员变量一定要在类外进行初始化
1.2 特性
- 静态成员为所有类对象所共享,不属于某个具体的实例
- 静态成员变量必须在类外定义,定义时不添加static关键字
- 类静态成员即可用类名::静态成员或者对象.静态成员来访问
- 静态成员函数没有隐藏的this指针,不能访问任何非静态成员
- 静态成员和类的普通成员一样,也有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成员相关推荐
- C++与C# 中static 成员变量的区别
C#中 类的静态成员变量(m_Number)可以通过非静态的成员函数(GetNumber().SetNumber())访问 这样,在外部,就可以new 一个类对象,通过调用该对象(sv)的GetNum ...
- C++ class中的静态(static)成员
C++ class中的静态(static)成员 (1) 静态数据成员 ①一般地静态数据成员在该类定义之外被初始化,如同一个成员函数被定义在类定义之外一样.在这种定义中的静态成员的名字必须被 ...
- C++与Java中的static成员总结
简述 在结构化程序设计中,内存中数据的共享是通过参数, 全局变量实现的; 在面向对象程序设计中函数与数据成员封装在一起, 数据共享通过类内部数据成员之间的相互访问, 外部对象则通过静态成员(即stat ...
- Java接口中的成员变量为什么必须是static ?
接口的含义 接口就是提供一种统一的协议, 而接口中的属性也属于协议中的成员.它们是公共的,静态的,最终的常量.相当于全局常量. 在interface里面的变量都是public static final ...
- C++中的static 成员变量的一些注意点
C++中的static成员变量主要用来为多个对象共享数据 例: #include <iostream> using namespace std; class Student{ public ...
- Java接口中的成员变量为什么必须声明为public static final?
我想对于每个Java程序员来说,接口都不陌生,接口中的方法也经常使用.而接口中的成员变量,就显得用得少一点, 而对于成员变量为什么必须声明为public static final,可能就更不清楚了,而 ...
- C++类中的static数据成员,static成员函数
文章转自:http://www.cnblogs.com/gysm/archive/2011/09/16/2179277.html 版权归原作者. C++类中谈到static,我们可以在类中定义stat ...
- C++ 类中的static成员的使用及单例设计示例
文章目录 static 静态成员变量 static静态成员函数 单例设计模式 单例实现图片资源的封装(很实用) 静态成员:被static修饰的成员变量\函数 可以通过对象(对象.静态成员).对象指针( ...
- 类中static变量和成员变量
类中static变量和普通变量的区别(一便解释了摘要中的内容) 要理解标题,我们首先来看下static变量本身的特殊之处,即它存储在全局数据区.在类中的static变量也是如此. C++的内存分布 ...
最新文章
- Android热更新方案Robust
- 【Python】如何用Python来操作PDF文件,建议收藏
- Swift-函数的理解
- dbms_job涉及到的知识点
- java2的7次方怎么表示_静态市盈率要怎么看?
- 数据结构树的基本操作_树的各类基本操作(数据结构)
- python结课设计力学方面_我对力学教案的评价
- linux操作系统下建用户,如何用Linux操作系统批量建立用户的shell
- 你经历过最奇特的梦境是怎样的?
- [AX]AX2012 AIF(五):使用文档服务更新数据
- processing一个作品_当你触摸到一束光| 交互灯光装置课程学员作品回顾
- R语言:企业风险分析(2)【蒙特卡罗模拟,Monte-Carlo Simulation】
- N76E003替换STM8S003F3
- 用cocos studio生成plist文件
- Nginx-配置大全
- A Question of Ingestion(Dp)
- 超级应用/_超级应用
- window操作系统下的句柄机制说明
- ubuntu 制作本地源 离线安装
- C语言前驱后驱字母表示,汽车中的前置后驱(FR)、前置前驱(FF)、后置后驱(RR)、中置后驱(MR)、4轮驱动(4WD),分别为什么概念?...
热门文章
- 主机厂对紧固件扭矩质量的控制方法——SunTorque智能扭矩系统
- SVN回滚/回退到某个版本
- 当全球可耕种面积只剩20%,“垂直农业”能否拯救全人类?
- wordpress主题修改_更改WordPress主题的10个步骤指南
- 强化学习和知识图谱实体对齐
- ValueAnimator 中文翻译
- 一种LED吸顶灯关灯后微量的故障解决办法
- 以王者荣耀为例,教你将一天的时间用成28小时
- html如何判断文本框是否为空,javascript怎么判断文本框是否为空?
- 苹果6换屏多钱_自贸区专业苹果6换个外屏多少钱