static在C++中的一些用法
来源:互联网 发布:淘宝卖家下载阿里旺旺 编辑:程序博客网 时间:2024/05/22 18:55
static是与auto相对的一个关键字,我们平时没有用static修饰的变量,都是默认为auto的。所以要理解static,就先看看auto。
auto(automatic)的含义是由程序自动控制变量的生存周期,通常指的就是变量在进入其作用域的时候被分配内存,离开其作用域的时候被释放;
而static是变量在程序初始化时被分配,直到程序退出前才被释放。
在C++中的用法:
1. 类的static数据成员
一般来说,一个类的数据成员需要一个实例(类的对象)做为载体,也就是说,对于每个对象,数据成员可以有不同的值。但对于static类型的数据成员来说,它不需要一个实例作为载体,简单地说:
类的静态成员是类的组成部分,而不是对象的组成部分。(或者说所有对象共享一个static数据成员)
所以,这样访问static数据成员是一个好习惯:
class_name::static_member;(而不是object_name.static_member)
这样可以时刻提醒自己static成员不属于任何一个对象,我们不需要建立对象就可以访问它。
注意:类声明只声明一个类的“尺寸和规格”,并不进行实际的内存分配,所以不能在类声明内初始化static成员变量;
初始化正确方法:如果把类声明代码放在a.hpp中,则应在a.cpp里面(类定义的外部)初始化,语法为:“type class_name::static_variable = value”(注意没有关键字static)
静态数据成员可以用来计算类对象的个数,
举个简单的例子:
//SingleDog.hpp#include<iostream>class SingleDog{public: SingleDog(int id_); static int getCount();private: const int id; static int count;};
//SingleDog.cpp#include"SingleDog.hpp"int SingleDog::count=0;//在此处初始化static成员变量SingleDog::SingleDog(int id_):id(id_){//const类型变量的初始化方式 count++;}int SingleDog::getCount(){ return count;//}
在main函数(这里没有给出)中,每建立一个SingleDog类的对象,count都会在原来基础上增加1,所以count可以用来计算对象的个数。
2. 类的static成员函数
static成员函数的访问与static数据成员类似;
需要注意的是,static成员函数不与任何对象相联系,所以它不具有this指针,从这个意义上讲,它无法访问类对象中的非静态成员。
(非static成员函数可以访问static成员)
知识量有限,请大佬指正。
- static在C++中的一些用法
- static 在C/C++中的用法
- STATIC在C/C++中的用法总结
- static在C和C++中的用法
- static 在C/C++中的用法总结
- C语言中的extern,static和register的一些用法
- static在C和C++中的用法和区别
- static在C和C++中的用法和区别
- static在C和C++中的用法和区别
- static在C和C++中的用法和区别
- static在C和C++中的用法和区别
- static在C和C++中的用法和区别
- static在C和C++中的用法和区别
- static在C和C++中的用法及区别
- static在c和c++中的用法和区别
- static在C和C++中的用法和区别
- iOS中static的作用及在C中的用法
- static在C和C++中的用法和区别
- java hashCode详解
- Linux启动流程
- js判断语句 for while循环
- java 设计模式1
- C语言特点&嵌入式开发为什么选择C语言
- static在C++中的一些用法
- javascript:indexOf()
- ESXI6.5虚拟机转换成物理机[V2P]
- 自己实现C语言库函数
- js属性方法操作 访问关系
- 矩阵扩展
- kernel更新F2FS模块
- openstack-mikata之网络服务(controller安装部署)
- 点评赛车