第五章静态成员
在一个类中还可以定义静态成员,但静态成员是所有对象公有的。静态成员分为静态数据成员和静态成员函数。
在类中定义静态数据成员的方法就是在该成员的前面加上关键字static。
定义静态数据成员的语句格式如下:
class 类名
{
……
static 类型说明符 成员名;
……
};
静态数据成员是类的所有对象共享的成员。静态数据成员所占的空间不会随着对象的产生而分配,也不会随着对象的消失而回收。对静态数据成员的操作和类中一般数据成员的操作是不一样的,定义为私有的静态数据成员不能被外界所访问。静态数据成员可由任意访问权限许可的函数所访问。
由于静态数据成员是类的所有对象共享的,而不从属于任何一个具体对象,所以必须对类的静态数据成员进行初始化,但对它的初始化不能在类的构造函数中进行,其初始化语句应当写在程序的全局区域中,并且必须指明其数据类型与所属的类名,其初始化格式如下:
类型类名::变量名=值;
对于在类的public部分说明的静态数据成员,在类的外部可以不使用成员函数而直接访问,但在使用时必须用类名指明所属的类,其访问格式为:
类名::静态数据成员名
对于在类的非public部分说明的静态数据成员,则只能由类的成员函数访问,其访问方法与访问类中普通数据成员的访问方法完全一样,但在类的外部不能访问。
静态成员函数的定义与一般成员函数的定义相同,只是在其前面冠以static关键字,其定义格式如下:
class 类名
{
…
static 类型 函数名(形参)
{ 函数体 }
…
};
说明:
(1)类的静态成员函数只能访问类的静态数据成员,而不能访问类中的普通函数成员(非静态数据成员),因为普通数据成员只有类的对象存在时才有意义。
(2)静态成员函数与类相联系,而不与类的对象相联系,所以,在类的外部调用类中的公有静态成员函数,必须在其左面加上“类名::”,而不是通过对象名调用公有静态成员函数。在类的外部不能调用类中的私有静态成员函数。
分享到:
相关推荐
C++类与对象:static静态数据成员静态成员函数.doc
c++静态成员使用实例,是在学习谭浩强老师c++课本的过程中写的
对C++静态成员函数和静态成员变量的使用方法和内部机制进行的经验总结
c++书店模拟 addressBookType
一般地,线程要读写类的私有成员变量,只有两种方法:将全局函数声明为类友元friend,或者使用静态的成员函数static。那非静态的成员函数呢?一般地方都说的是,不行,做不了。。。为什么不行?都是代码区的代码,...
C++静态成员变量和静态成员函数C++静态成员变量和静态成员函数
首先要知道 1:静态函数和非静态的区别... 也是,即使对象不存在,这个静态成员也存在了,而其他的非静态成员只有在对象存在的时候,非静态成员才存在(这里的存在是指有内存被分配) 2: 静态函数和非静态函数
静态成员函数与非静态成员函数的区别 数据成员: 静态数据成员是类的一部分,为类的所有实例共享(静态区);非静态数据成员,类的每个实例都有一份拷贝(动态区)。 静态数据成员的访问: 静态数据成员是类的一部分,在...
C++类中的静态成员变量和静态成员函数的作用
C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习...
大家都知道C++中类的成员函数默认都提供了this指针,在非静态成员函数中当你调用函数的时候,编译器都会“自动”帮你把这个this指针加到函数形参里去。当然在C++灵活性下面,类还具备了静态成员和静态函数,即 ...
通过函数指针调用C++非静态成员函数通过函数指针调用C++非静态成员函数
VS2010 C++学习(2):BMP图像文件的结构分析、反色处理、平滑处理代码
VS2010 C++学习(6):ListCtrl用法及ADO方式读写Access程序
cpp代码-C++:静态函数、静态成员 static
使用简单的程序展示了C++调用动态库和静态库的方法。 文件结构: exe:笔者部署可运行文件,因开发环境版本不同,可能存在无法直接使用的情况,两个部署文件(copy_ldd.sh及useLib1.sh)可以结合文章分享的(ubuntu下...
长时间积累的结果,静态成员不懂初学者可以认真看看~绝对强大~!
1、讲解static静态局部变量的原理与特点; 2、讲解static静态全局变量的原理与特点; 3、讲解static静态成员变量的原理与特点; 4、讲解static静态成员函数的原理与特点;
实验4 含有类的静态成员与类的友元的C++程序设计 .类的静态成员函数可以通过对象名调用吗?
C++程序设计课件:第15章 静态成员与友元.ppt