作者:gzshun. 原创作品,转载请标明出处!
来源:http://blog.csdn.net/gzshun
静态成员的提出是为了解决数据共享的问题。
一、静态数据成员
静态数据成员是同一个类中所有对象共享的成员,而不是某一对象的成员。因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。
二、如何定义一个静态数据成员
1.使用关键词static声明静态数据成员。(在类中)
2.对静态数据成员进行初始化。(在类外) 由于静态数据成员要分配空间,因此不能在类声明中进行初始化。静态数据成员初始化在类的外部进行,与一般数据成员的初始化不同。
static数据成员的初始化格式:
<数据类型> <类名>::<静态数据成员> = <值>;
静态数据成员的使用例子:
执行结果:
CObj类总共创建了10对象
二、静态成员函数-->(没有this指针)
静态成员函数和静态数据成员一样,它们都属于类的静态成员,都不是对象成员。因此对静态成员的引用不需要用对象名,不过用对象名来引用也是可以的。
注:在静态成员函数的实现中,不能直接引用类中的非静态成员,可以引用类中说明的静态成员。但静态成员函数中可以间接的引用非静态成员,可以通过对象来引用。
来个例子,说明在 静态成员函数中,可以直接引用静态数据成员,但不能直接引用非静态数据成员,非静态数据成员必须通过对象来引用。
执行结果:
直接引用: CObj类总共创建了3对象
间接引用: CObj类总共创建了3对象
直接引用: CObj类总共创建了3对象
间接引用: CObj类总共创建了3对象
三、const的static成员
上面已经说了,类的static数据成员,不能在类的声明中初始化,只能在类外进行初始化。但这里存在一种特殊情况,如果该静态数据成员是一个常量表达式,那么它就能够在类中进行初始化。
初始化的格式是:static const <数据类型> <变量名> = <值>;
例子:
执行结果:
State_Mount = 0
State_Umount = 1
State_Mount = 0
State_Umount = 1
分享到:
相关推荐
c++静态成员使用实例,是在学习谭浩强老师c++课本的过程中写的
学习友元函数的定义和原理。 •学习静态数据成员和静态成员函数的使用。 •学习静态成员代替全局变量实现对象间的共享。
C++学习笔记,博主个人向。内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联...
本资源为C++实验1-13,包含完整...实验6-利用静态成员编程 实验7-利用友元编程 实验8-继承和派生的编程 实验9-利用多态编程 实验10-运算符重载编程 实验11- 利用模板编程 实验12-利用文件编程 实验13- 面向对象综合编程
C++学习资料中包括六章:1、对象与类;2、构造函数与析构函数;3、堆与拷贝构造函数;4、静态数据成员与静态成员函数;5、继承;6、多态与虚函数。每一章中的代码都很全,国科大杨老师的授课资料,从根本上讲解C++...
1.3 Windows系统下搭建C++学习环境 2 二、C++基础入门 16 2.1 C++类和对象 17 2.2 C++命名空间 18 2.3 std标准命名空间 20 2.4 C++新增的标准输入输出方法(cin和cout) 22 2.5 C++规定的变量定义位置 24 2.6 C++新增...
主体:(一)<C++与C语言的区别> 一、C++概述 (一) 发展历史 1980年,Bjarne Stroustrup博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup...
刚开始学习C++的类和对象的部分,对类中的常数据成员和静态数据成员的概念和用法经常混淆,所以今天整理一下,顺便说一下,今天是我的生日,祝我生日快乐,呵呵。 常数据成员常数据成员是指在类中定义的不能修改其值...
上机5 含有类的静态成员与类的友元的C++程序的结构设计 一、实验目的 1.理解类的静态成员解决共享问题的机制; 2.掌握类的静态数据成员与静态函数成员的实现方法; 3.理解利用友元关系实现数据共享的机制,掌握类...
9.3 C++中的静态成员 166 9.3.1 定义静态数据成员的存储 166 9.3.2 嵌套类和局部类 168 9.3.3 静态成员函数 169 9.4 静态初始化的依赖因素 171 9.5 转换连接指定 174 9.6 小结 174 9.7 练习 174 第10章 引用和拷贝...
定义字符型静态数据成员ServerName[10],保存其服务器名称;整型静态数据成员ClientNum,记录定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中定义类,在文件client.cpp中实现,...
童鞋们在学习C++的时候,往往只是按照书本上的原文去强行记忆各种特性,比方说,静态变量只初始化一次。你心中一定在默念:一定要记住,static只会初始化一次云云,希望自己能够记住。告诉你,你为什么总是记不住,...
9.3 C++中的静态成员 166 9.3.1 定义静态数据成员的存储 166 9.3.2 嵌套类和局部类 168 9.3.3 静态成员函数 169 9.4 静态初始化的依赖因素 171 9.5 转换连接指定 174 9.6 小结 174 9.7 练习 174 第10章 引用和拷贝...
2. 操作符重载,this,静态成员 Overloading Operators. this. Static members 3. 类之间的关系 Relationships between classes: friend. Inheritance 4. 虚拟成员,抽象,多态 Virtual Members. Abstraction. ...
一个简单的比较,C++基础学习知识点,很容易理解,适合小白
主要介绍了详解C++编程中的静态成员与可变数据成员,是C++入门学习中的基础知识,需要的朋友可以参考下
主要介绍了深入解析C++编程中的静态成员函数,是C++入门学习中的基础知识,需要的朋友可以参考下
第1篇阐述c++的关键语法,包括重载、虚拟函数、静态成员、类模板、多重继承和内嵌类等内容;第2篇介绍mfc的核心机制,重点剖析窗口封装类cwnd及其派生类,以及windows窗口操作的相关内容,阐释了mfc的消息映射与消息...
9.3 C++中的静态成员 166 9.3.1 定义静态数据成员的存储 166 9.3.2 嵌套类和局部类 168 9.3.3 静态成员函数 169 9.4 静态初始化的依赖因素 171 9.5 转换连接指定 174 9.6 小结 174 9.7 练习 174 第10章 引用和拷贝...