C++类与static关键字
五句话概括:静态成员变量和静态成员函数都属于类的,不属于具体某个对象。
静态成员变量定义时,可以在类外定义,不受访问权限限制,但是在访问时,却要遵循访问权限限制。
静态成员函数只能访问静态成员变量。普通函数既可以访问静态成员变量,也可以访问普通成员变量。
静态成员变量存在的意义是实现数据的共享。
在静态成员函数内部可以声明静态变量,注意不是静态成员变量。如果在静态成员函数内部声明一个静态变量,则该类的所有对象将共享这个变量。
静态成员变量
静态成员变量属于类而不属于任何一个对象,如此一来可以实现数据共享功能。静态成员变量不会影响类及其对象的大小,也即sizeof结果不会受到影响。
静态成员变量如果被设置为private或protected属性,则在类外同样无法访问,但定义该变量的时候却不受此限制,如例2所示,虽然静态成员变量count为private属性,但是它在类外定义的时候不受private限制。
class student
{
public:student(){count ++;}~student(){count --;}
private:static int count;//其它成员变量
};
int student::count = 0;//静态成员变量可以在外部用类名加上域解析符“::”加上变量名的形式定义
静态成员函数
静态成员函数只能访问静态成员变量,而不能访问非静态成员变量。普通成员函数(包括构造函数和析构函数)既可以访问普通成员变量,同时又可以访问静态成员变量。
#include<iostream>
using namespace std;class test
{
public:test(int a, int b){num = a; plus = b;}static int getnum(){return num;}static int add(){return num+plus;} //compile errorvoid setnum(int a){num = a;}void setplus(int a){plus = a;}
private:static int num;int plus;
};
int test::num = 1;int main()
{test one;one.setnum(5);cout<<test::getnum()<<endl;return 0;
}
访问静态成员变量和静态成员函数均有两种方式,其一是和普通的成员变量成员函数相同,通过对象来访问,其二则是可以通过类名加上域解析操作符访问。当然访问过程中仍然要遵循private、protected和public关键字的访问权限限定。访问静态成员变量和静态成员函数首选的方法是通过类来访问,毕竟静态成员变量和静态成员函数都是属于类的,与类相关联,而不是属于类的对象。普通成员变量或成员函数不可以通过类来访问。由于静态成员变量和静态成员函数都是属于类,而不是属于对象,因此静态成员函数内部也不存在this指针,因为静态成员函数不属于对象。
在静态成员函数内部可以声明静态变量,注意不是静态成员变量。如果在静态成员函数内部声明一个静态变量,则该类的所有对象将共享这个变量。
#include<iostream>
using namespace std;class test
{
public:static void add(int a);
};void test::add(int a)
{static int num = 0;int count = 0;num += a;count += a;cout<<num<<" "<<count<<endl;
}int main()
{test one,two,three;one.add(5);two.add(4);three.add(11);return 0;
}
程序运行结果:
5 5
9 4
20 11
C++类与static关键字相关推荐
- static string java_java:String类、static关键字、Arrays类、 Math类
public voidStrMethodTest(){/** public int length () :返回此字符串的长度. * public String concat (String str) ...
- java关键字static_Java中的static关键字
java关键字static static keyword in Java is used a lot in java programming. Java static keyword is used ...
- java static关键字的作用是什么_static关键字有什么作用
今天主要学习下Java语言中的static关键字. static关键字的含义及使用场景 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局 ...
- java中static关键字的作用_面试|static 关键字有什么作用
今天主要学习下Java语言中的static关键字. static关键字的含义及使用场景 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局 ...
- static 关键字用法总结
一.static 关键字的含义 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法.(注意:不能修饰普通 ...
- 面试|static 关键字有什么作用
今天主要学习下Java语言中的static关键字. static关键字的含义及使用场景 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局 ...
- Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入
static 关键字 在类中,用static声明的成员变量为静态成员变量,也称为类变量. 类变量的生命周期和类相同,在整个应用程序执行期间都有效.它有如下特点: 1. 为该类的公用变量,属于类,被该类 ...
- Java:封装的概念,UML类图,构造方法,this关键字,static关键字,方法重载,包package
oop三大特性:封装,继承,多态 oop一般指面向对象程序设计(一种计算机编程架构) 一.封装的概念: 将东西包在一起,然后以新的完整形式呈现出来 ...
- JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)
运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...
最新文章
- ERP项目中一个表应该有哪些默认字段
- Ardino基础教程 5_按键控制
- 转如何限制文本框只能输入数字,小数点,英文,汉字等各类代码
- Spring5的数据访问与集成
- 推荐一个IT老鸟肝了2月有余的免费开源WPF企业级开发框架
- 基于Asp.Net Core打造轻量级内部服务治理RPC(二 远程服务设计)
- python交叉验证函数_python – 在sklearn中使用交叉验证和AUC-ROC作为逻辑回归模型...
- Linq 左连接 left join
- Ubuntu 16.04 火狐添加java插件、解决Firefox强制低版本java插件运行以及安全设置限制自签名应用程序运行
- 专线维护 07/11
- ZOJ 3229 有上下界最大流
- Uboot系统初始化为何要初始化堆栈?为何C语言的函数调用要用到堆栈,而汇编却不需要初始化堆栈?
- c语言默认参数_GCC 11 将默认前端语言改成 C++ 17
- java sybase数据库连接_在JAVA中连接Sybase数据库(例子)
- python金融反欺诈-项目实战
- 750ti显卡能支持服务器吗,《守望先锋》显卡实测:750Ti降服全特效
- 118、交换机配置规范
- Zookeeper-Paxos-屁民的故事-内含视频讲解
- HTML个人简历代码模板(静态页面)
- ARM SCP-firmware 代码解析
热门文章
- C++ Map Source
- 混淆工具Dotfuscator基本使用
- VC++初步实现保存数据为音频WAV文件
- Kubernetes的yaml文件中command的使用
- java 图片上传
- Windows XP Embedded 上手指南
- springBoot单元测试-模拟MVC测试
- CentOS-6.4 minimal - 安装VMware Tools(linux)
- Photon Server伺服务器在LoadBalancing的基础上扩展登陆服务
- Docker: 解决Centos 7中Permission Denied的问题