`
holoblog
  • 浏览: 1264158 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:19538
文章分类
社区版块
存档分类
最新评论

关注C++细节——static类成员使用注意

 
阅读更多

对于某一特定类类型的全体对象我们需要访问一个共同的变量,这个时候我们通常是在类的声明中声明一个静态变量即static变量。当然可以用一个全局变量来代替,但是用全局变量是一个很不好的习惯,重要的一点就是全局变量会破坏类的封装。然而类中static变量不像普通变量,它独立与该类的任意对象而存在,每个static数据成员与一个特定的类相关连,而非与该类的对象相关连。

一.使用类的static成员的优点:

1.static成员的名字是在类的作用域中,因此可以避免与其他类的成员或全局对象的名字发生冲突。

2.可以实施封装。static成员可以是私有成员,而全局对象不可以。

3.通过阅读程序容易看出static成员是与特定类关联的。这种可见性可以清晰地显示程序员的意图。

二.static类成员的生命与定义

static类成员在声明类的时候同时被声明,static类成员的定义应该放在该类的实现文件中。即类声明在A.h中,而类的实现放在A.cpp中则,static类型变量的定义就放在A.cpp中。

格式为<数据类型> <类名>::<static变量名>=<初始值>

三.static修饰const类型的变量

当static修饰const类型的变量时,此变量可以在类的声明中直接初始化,但是该数据成员仍然必须在定义体之外进行定义。

分享到:
评论

相关推荐

    C++各种综合类的设计.rar

    【标题】"C++各种综合类的设计.rar" 涉及到的是C++编程语言中的一个关键主题——类的设计。C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程的程序设计语言。在这个...

    C++基本概念在编译器中如何实现

    ### C++基本概念在编译器中的实现 #### 一、引言 C++作为一种广泛使用的编程语言,其强大的功能和灵活性很大程度上依赖于编译器的高效处理...通过对这些概念的理解,我们可以更好地掌握C++编程的核心思想和技术细节。

    c++课件\钱能C++程序设计教程(第二版)课件\8 类.ppt

    《C++程序设计教程》第二版的第八章主要讲解了C++中的核心概念——类(Class)。类是C++面向对象编程的基础,它允许我们定义自定义的数据类型,并且封装了数据和操作这些数据的方法。类不同于普通的应用程序,它不直接...

    对C++的总论理解

    在C++中,类的设计主要用于实现面向对象编程的核心思想——封装。封装是指将数据和操作这些数据的方法绑定在一起,并对外部隐藏其具体实现细节。为了实现这一目标,C++提供了私有(private)和保护(protected)成员变量...

    C++面向对象PPT资料

    此外,多继承(Multiple Inheritance)也是C++的一大特色,一个类可以同时继承多个父类,但需要注意菱形问题(Diamond Problem)及其解决方案,如虚继承(Virtual Inheritance)。 C++的模板(Templates)和STL...

    C/C++ 内存编程 pdf

    从给定的文件信息来看,文章深入探讨了C/C++中的内存编程,特别是关于C++对象内存布局的细节,这是程序设计中一个重要的概念。文章不仅涵盖了基础的内存布局,如空类、普通类和静态成员的处理,还进一步探讨了更复杂...

    C++对象模型

    本篇将主要关注C++对象模型的第二方面——即其实现机制。 #### 二、对象与C++对象模型 ##### 2.1 C++对象模型 C++的对象模型定义了对象如何在内存中表示以及对象之间的交互方式。它包括以下几个核心概念: - **...

    C++简单爱(五)

    头文件用来包含类声明、函数原型等,而实现文件则包含具体的函数实现和类的成员函数。这样的分离可以防止重复编译,提高编译效率,并且有助于代码的封装和隐藏实现细节。 第十四章进一步深化了对程序文件结构的理解...

    要封装的类

    9. **静态成员**(Static Members):静态成员属于类,而不是类的任何特定实例。这意味着所有对象共享同一份静态成员,且静态成员不参与对象的实例化过程。 10. **C++标准库**:C++提供了丰富的标准库,包括STL...

    Effecitve C++ 第二版(中文)

    C++与C虽然有着密切的关系——C++是C的一个超集,但这并不意味着你可以直接将C的习惯应用于C++中。事实上,C++引入了大量的新特性,这些特性不仅增强了语言的功能性,还改变了编程者的思维方式。例如,在C++中,你...

    c++ log日志

    在C++中,实现日志记录的一个常见方法是创建一个包含静态成员函数的类,这些函数用于在不同级别记录日志。myLog.h可能定义了这样的类,包括接口(如`debug()`, `info()`, `warn()`, `error()`)和可能的配置选项(如...

    [趣味程序导学Visual c++

    - **ClassWizard 工具**:用于管理和生成类、成员函数等。 - **WizardBar 工具栏**:提供了一系列向导,帮助用户快速完成特定任务。 - **创建第一个工程**: - **基于文本框的工程**:适合简单的命令行程序。 - **...

    Google C++ 编程规范(精心制作的链接文档-方便查看学习)

    - **Nested Classes**:嵌套类可以用于组织相关的类结构,但在使用时要注意其作用域和可见性。 - **Nonmember, Static Member, and Global Functions**:非成员函数可以作为工具函数或实用函数使用;静态成员函数...

    Google开源风格指南学习笔记-c++代码规范

    ### Google开源风格指南学习笔记——C++代码规范详解 #### 避免多重包含与使用前置声明 在C++开发中,避免多重包含是至关重要的,因为它可以减少编译时间并降低代码之间的依赖关系。当一个头文件被多次包含时,...

    08丨理论五:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?1

    2. **成员类型**:抽象类可以有非静态的成员变量,而接口中所有成员默认为`public static final`,即常量。接口中不能有实例变量,但可以有静态变量。 3. **访问修饰符**:接口的方法默认是公开的(`public`),而...

    C++设计模式设计模式(类设计之精华)

    // 具体策略类——加法类 class AddOperation : public COperation { public: AddOperation(int a, int b) { m_nFirst = a; m_nSecond = b; } virtual double GetResult() { return m_nFirst + m_nSecond; } ...

    C++MFC教程

    newWndProc就是窗口过程只要是该类的实例生成的窗口都使用该窗口过程。 所以了解了Windows的消息机制在加上对消息映射的理解就很容易了解MFC开发的基本思路了。 1.4 利用MFC进行开发的通用方法介绍 以下是我在最初...

Global site tag (gtag.js) - Google Analytics