`
fireDragonpzy
  • 浏览: 460131 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

c++基础知识(十)学习C++静态成员注意事宜

c++ 
阅读更多
C++中的一个类中还可以定义静态成员,但C++静态成员是所有对象公有的,每个静态成员分为静态数据成员和静态成员函数。
AD:
下面文章着重介绍C++静态成员,类的静态数据成员应该在代码中被显示的初始化,一定要在类外进行,  C++静态成员和普通数据成员区别较大,体现在下面几点:

1.静态数据成员

在类中定义C++静态成员成员的方法就是在该成员的前面加上关键字static.

定义静态数据成员的语句格式如下:

class 类名  
 
 {  
 
 ……  
 
 static 类型说明符 成员名;  
 
 ……  
 
 };  
C++静态成员是类的所有对象共享的成员。静态数据成员所占的空间不会随着对象的产生而分配,也不会随着对象的消失而回收。对静态数据成员的操作和类中一般数据成员的操作是不一样的,定义为私有的静态数据成员不能被外界所访问。静态数据成员可由任意访问权限许可的函数所访问。

由于静态数据成员是类的所有对象共享的,而不从属于任何一个具体对象,所以必须对类的静态数据成员进行初始化,但对它的初始化不能在类的构造函数中进行,其初始化语句应当写在程序的全局区域中,并且必须指明其数据类型与所属的类名,其初始化格式如下:

类型类名::变量名=值;对于在类的public部分说明的静态数据成员,在类的外部可以不使用成员函数而直接访问,但在使用时必须用类名指明所属的类,其访问格式为:对于在类的非public部分说明的静态数据成员,则只能由类的成员函数访问,其访问方法与访问类中普通数据成员的访问方法完全一样,但在类的外部不能访问。

2.静态成员函数

静态成员函数的定义与一般成员函数的定义相同,只是在其前面冠以static关键字,其定义格式如下:

class 类名  
 
 {  
 
 …  
 
 static 类型 函数名(形参)  
 
 { 函数体 }  
 
 …  
 
 }; 
说明:

(1)类的C++静态成员函数只能访问类的静态数据成员,而不能访问类中的普通函数成员(非静态数据成员),因为普通数据成员只有类的对象存在时才有意义。

(2)C++静态成员函数与类相联系,而不与类的对象相联系,所以,在类的外部调用类中的公有静态成员函数,必须在其左面加上“类名::”,而不是通过对象名调用公有静态成员函数。在类的外部不能调用类中的私有静态成员函数。


摘自:http://developer.51cto.com/art/201001/181379.htm
分享到:
评论

相关推荐

    c++静态成员使用实例

    在C++编程语言中,静态成员是一个非常重要的概念,它为类提供了一种共享数据和功能的方法。静态成员不依赖于任何对象实例,而是属于类本身。本篇将通过两个实例——静态成员函数和静态数据成员,深入探讨它们在C++中...

    C++静态成员函数与静态成员变量小结

    "C++静态成员函数与静态成员变量小结" 静态成员在C++中扮演着重要的角色,包括静态数据成员和静态函数成员两部分。静态成员是指在类体中使用static修饰符声明的成员,可以直接使用类名+静态成员名访问该静态成员。...

    C++基础知识课件学习

    C++基础知识介绍,清楚简单明了,很容易进行记忆与学习

    C++非静态成员函数完全可以作为线程函数

    一般地,线程要读写类的私有成员变量,只有两种方法:将全局函数声明为类友元friend,或者使用静态的成员函数static。那非静态的成员函数呢?一般地方都说的是,不行,做不了。。。为什么不行?都是代码区的代码,...

    c++基本知识点汇总

    C++编程语言是一种编译型、静态类型、通用编程语言,具有面向...掌握上述C++的基本知识点对于深入学习C++编程语言以及进行高效的软件开发是非常重要的。在实际开发中,还需要不断实践和总结,以达到熟练运用的程度。

    少儿编程C++初级基础知识点.zip

    【少儿编程C++初级基础知识点】是针对初学者设计的一系列C++编程教学内容,旨在帮助孩子们建立起坚实的编程基础。这个压缩包包含了多个章节的源代码文件,涵盖了C++语言的基础概念和关键语法,让我们逐一解析这些...

    关于C++静态成员函数访问非静态成员变量的问题

    在C++编程语言中,静态成员函数和非静态成员函数有着显著的区别,这主要体现在它们的作用域、内存分配以及对对象状态的访问上。当我们讨论"关于C++静态成员函数访问非静态成员变量的问题"时,我们需要深入理解这两种...

    通过函数指针调用C++非静态成员函数

    ### 通过函数指针调用C++非静态成员函数 在C++编程中,通过函数指针调用非静态成员函数是一种高级技巧,主要用于实现回调、动态绑定等场景。本文将详细探讨如何在Visual C++ 6.0 (VC6.0) 和Borland C++ Builder 6.0...

    全局数据管理—使用C++类的静态成员取代全局数据

    为了解决这些问题,C++引入了静态成员的概念,它提供了一种更安全、更可控的方式来管理全局数据。 静态成员分为静态数据成员和静态成员函数。在标题“全局数据管理—使用C++类的静态成员取代全局数据”中,重点在于...

    C++中静态成员函数与静态成员变量(static )

    C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习...

    C++静态成员函数不能调用非静态成员变量(详解)

    在C++编程语言中,静态成员函数和非静态成员函数有着显著的区别,这些差异主要体现在它们的作用域、存储方式以及如何访问类的成员。本文将深入探讨为什么C++的静态成员函数不能调用非静态成员变量,并通过示例进行...

    C++中静态成员函数访问非静态成员的实例

    C++中静态成员函数访问非静态成员的实例 实现代码: #include /* 静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问非静态数据成员,但静态成员函数或静态数据成员可由任意访问许可...

    c++基础学习文档最好的

    本文档集合了C++基础学习的关键知识点,旨在帮助学习者快速入门并逐步提升技能。 1. **C++概述**:C++是在C语言基础上发展起来的,由Bjarne Stroustrup于1983年创建。它引入了类、模板、异常处理等面向对象编程概念...

    C++静态成员函数访问非静态成员的几种方法

    大家都知道C++中类的成员函数默认都提供了this指针,在非静态成员函数中当你调用函数的时候,编译器都会“自动”帮你把这个this指针加到函数形参里去。当然在C++灵活性下面,类还具备了静态成员和静态函数,即 ...

    C++ Test实验(静态测试).pdf

    C++静态测试实验报告 本实验报告主要介绍了使用 Parasoft C++ Test 进行...我们学习了静态代码规范检测、自定义代码测试规范、BugDetective 静态数据流检测功能,并掌握了使用 Parasoft C++ Test 进行静态测试的方法。

    c++类静态数据成员与类静态成员函数

    在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢? 这个问题便是本章的重点:

    详解c++ 静态成员变量

    C++中的静态成员变量是一种特殊的成员,它们不与任何特定的对象实例相关联,而是属于类本身。静态成员变量的声明通常在类定义内部,而定义和初始化则需要在类的外部进行,这是因为它们的生命周期贯穿整个程序,而...

    C++类的静态成员初始化详细讲解

    在C++编程语言中,类的静态成员是一个特殊类型的成员,它属于整个类,而不是类的每个实例。静态成员在内存中只有一份拷贝,所有类的对象共享这个拷贝。这里我们将深入探讨静态成员的初始化,特别是针对整型和枚举型...

    王桂林老师 c++基础与提高

    最后,王老师通过内联函数的语法和评价、类型转换的不同方式、命名空间的使用以及系统string类的知识,为学习者提供了一个全面的C++基础和提高的知识体系。通过案例分析,如系统string与自定义的MyString类的对比,...

Global site tag (gtag.js) - Google Analytics