`
mquv_site
  • 浏览: 38847 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

C++学习-静态成员(6)

 
阅读更多
作者: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++课本的过程中写的

    面向对象程序设计B(静态成员与友元 )

    学习友元函数的定义和原理。 •学习静态数据成员和静态成员函数的使用。 •学习静态成员代替全局变量实现对象间的共享。

    C++学习笔记- 面向对象 .md

    C++学习笔记,博主个人向。内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联...

    C++实验1-13,包含完整程序、注释、报告

    本资源为C++实验1-13,包含完整...实验6-利用静态成员编程 实验7-利用友元编程 实验8-继承和派生的编程 实验9-利用多态编程 实验10-运算符重载编程 实验11- 利用模板编程 实验12-利用文件编程 实验13- 面向对象综合编程

    C++学习资料和代码实现

    C++学习资料中包括六章:1、对象与类;2、构造函数与析构函数;3、堆与拷贝构造函数;4、静态数据成员与静态成员函数;5、继承;6、多态与虚函数。每一章中的代码都很全,国科大杨老师的授课资料,从根本上讲解C++...

    C++入门指南-v2.4.pdf

    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++入门资料

    主体:(一)&lt;C++与C语言的区别&gt; 一、C++概述 (一) 发展历史 1980年,Bjarne Stroustrup博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup...

    C++类中的常数据成员与静态数据成员之间的区别

    刚开始学习C++的类和对象的部分,对类中的常数据成员和静态数据成员的概念和用法经常混淆,所以今天整理一下,顺便说一下,今天是我的生日,祝我生日快乐,呵呵。 常数据成员常数据成员是指在类中定义的不能修改其值...

    C++程序设计.doc

    上机5 含有类的静态成员与类的友元的C++程序的结构设计 一、实验目的 1.理解类的静态成员解决共享问题的机制; 2.掌握类的静态数据成员与静态函数成员的实现方法; 3.理解利用友元关系实现数据共享的机制,掌握类...

    C++编程思想6-10

    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章 引用和拷贝...

    C++程序设计代码

    定义字符型静态数据成员ServerName[10],保存其服务器名称;整型静态数据成员ClientNum,记录定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中定义类,在文件client.cpp中实现,...

    C++ 怎么让静态变量只初始化一次

    童鞋们在学习C++的时候,往往只是按照书本上的原文去强行记忆各种特性,比方说,静态变量只初始化一次。你心中一定在默念:一定要记住,static只会初始化一次云云,希望自己能够记住。告诉你,你为什么总是记不住,...

    C++ 语言 详细教程电子版

    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章 引用和拷贝...

    C++基础教程完整版

    2. 操作符重载,this,静态成员 Overloading Operators. this. Static members 3. 类之间的关系 Relationships between classes: friend. Inheritance 4. 虚拟成员,抽象,多态 Virtual Members. Abstraction. ...

    静态数据成员及成员函数比较

    一个简单的比较,C++基础学习知识点,很容易理解,适合小白

    详解C++编程中的静态成员与可变数据成员

    主要介绍了详解C++编程中的静态成员与可变数据成员,是C++入门学习中的基础知识,需要的朋友可以参考下

    深入解析C++编程中的静态成员函数

    主要介绍了深入解析C++编程中的静态成员函数,是C++入门学习中的基础知识,需要的朋友可以参考下

    Visual C++权威剖析--MFC的原理、机制与开发实例

    第1篇阐述c++的关键语法,包括重载、虚拟函数、静态成员、类模板、多重继承和内嵌类等内容;第2篇介绍mfc的核心机制,重点剖析窗口封装类cwnd及其派生类,以及windows窗口操作的相关内容,阐释了mfc的消息映射与消息...

    c++学习经典图书:C++ 编程思想(全).rar

    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章 引用和拷贝...

Global site tag (gtag.js) - Google Analytics