`
evget
  • 浏览: 144723 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

C++中静态成员--变量与函数

阅读更多
文章关键字:|C++|静态成员|变量|函数|static|

      使变量成为类独一无二的资料,应该独立在个对象之外,方法是:定义其为static。例如;

class SavingAccount
{
private:
         char m_name[40];
         char m_addr[60];
         double total;
         static double m_rate;
 
};

      static成员变量不属于对象的一部分,而是类的一部分,所以程序可以在还没有诞生任何对象的时候就处理此种成员变量。但是首先你必须初始化它。

      初始化static成员变量不能安排在类的构造函数中,因为构造函数可能一再被调用,而变量的初值却只应该设定一次。也不要把初始化安排在头文件中,因为它可能会被包含在许多地方。而应该放在main函数之中,或全域函数中,或者任何函数之外。例如:

double SavingAccount::m_rate = 0.0075;
void main()
{----}

      这么做可曾考虑到m_rate是private属性?没有关系,注意:设定static成员变量初值时,不受任何存取权限的束缚。(初始化时double类型必须要有)但是下面两种存取static变量的方式,就必须满足变量是public权限。

//第一种方式
void main()
{SavingAccount::m_rate = 0.0075;}//此行成立,必须把m_rate改为public
 
//第二种方式
void main()
{
  SavingAccount myAccount;
  myAccount.m_rate = 0.0075; //此行成立,必须把m_rate改为public
}

      但是如果希望在产生任何对象之前就存取其class的private static成员变量,则必须设计一个static成员函数(例如以下的setRate)

class SavingAccount
{
private:
         char m_name[40];
         char m_addr[60];
         double total;
         static double m_rate;
public:
         static void setRate(double newRate){m_rate = newRate;}
 
};

double SavingAccount::m_rate = 0.0075;
void main()
{
  SavingAccount::setRate(0.0074);
  SavingAccount myAccount;
  myAccount.setRate(0.0074);
}



原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9179
分享到:
评论

相关推荐

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

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

    C++类中的静态成员变量和静态成员函数的作用

    ### C++类中的静态成员变量和静态成员函数的作用 #### 静态成员变量与静态成员函数概述 在C++编程语言中,类是面向对象编程的基础,它允许程序员定义包含数据成员(变量)和成员函数(方法)的复合数据类型。其中...

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

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

    C++静态成员变量和静态成员函数

    ### C++静态成员变量与静态成员函数详解 #### 静态成员变量 在C++中,静态成员变量是类的一个特殊成员,它被所有该类的对象所共享。这意味着无论创建多少个对象,静态成员变量都只有一个副本存在于内存中。 **...

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

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

    c++静态成员使用实例

    本篇将通过两个实例——静态成员函数和静态数据成员,深入探讨它们在C++中的应用。 首先,我们来看静态成员函数。在C++中,静态成员函数可以被类的所有对象共享,它并不持有隐含的`this`指针,因此不能访问非静态...

    C++静态成员函数小结

    C++静态成员函数小结 静态成员函数是C++中一个非常重要的概念,特别是在类设计和对象编程中。静态成员函数可以分为两部分:静态数据成员和静态函数成员。 一、静态数据成员 静态数据成员是类中的全局变量,它们...

    C++类与对象:static静态数据成员静态成员函数.doc

    静态数据成员的初始化不同于普通数据成员,它需要在类体外进行,且初始化时省略`static`关键字,以避免与其他静态变量混淆。初始化格式如下: ```cpp Data_Type ClassName::StaticDataMember = Initial_Value; ``` ...

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

    总结来说,C++中的静态成员函数不能调用非静态成员变量,主要是由于静态成员函数不与任何特定对象绑定,没有`this`指针,因此无法访问需要对象实例才能确定的非静态成员。要访问非静态成员变量,必须通过非静态成员...

    吕鑫:【C++语法与数据结构第06天】【第3堂课】静态成员变量与静态成员函数(面试题)

    1、讲解static静态局部变量的原理与特点; 2、讲解static静态全局变量的原理与特点; 3、讲解static静态成员变量的原理与特点; 4、讲解static静态成员函数的原理与特点;

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

    当我们讨论"关于C++静态成员函数访问非静态成员变量的问题"时,我们需要深入理解这两种类型的成员函数的工作原理。 首先,静态成员函数是属于类的,而不是类的实例或对象。这意味着它们可以在没有创建任何对象的...

    静态成员变量和静态成员函数

    在编程语言中,如C++或Java,`static`关键字有着重要的作用,它主要用于定义静态成员变量和静态成员函数。本文将深入解析`static`的关键特性,并探讨它们在面向过程和面向对象编程中的应用。 首先,静态成员变量,...

    C++静态成员函数的说明及使用

    C++中的静态成员函数是一种特殊类型的成员函数,它不依赖于类的实例存在,而是直接与类本身相关联。在理解和使用静态成员函数时,有以下几个关键知识点: 1. **定义**: 静态成员函数的定义与普通成员函数不同,...

    C++实验报告四--静态成员与友元.docx

    总的来说,这个实验提供了对C++静态成员和友元概念的实际应用,同时强调了类的构造、析构、成员函数以及链表操作的理解和实践。通过这样的练习,学生可以更深入地了解面向对象编程中的重要概念,并学会如何在实际...

    C++ 中静态成员函数与非静态成员函数的区别

    静态成员函数与非静态成员函数的区别 数据成员: 静态数据成员是类的一部分,为类的所有实例共享(静态区);非静态数据成员,类的每个实例都有一份拷贝(动态区)。 静态数据成员的访问: 静态数据成员是类的一部分,在...

    CC++中的静态全局变量,静态局部变量,全局变量,局部变量的区别

    - 设计和使用访问静态变量的函数时,需考虑重入问题,因为静态变量都位于静态数据存储区,全局可见。 - 需要一个可重入的函数时,应避免在函数中使用`static`变量,以免出现内部存储器问题。 - 当函数返回值为指针...

    C++Hook(钩子)编程,通过内联汇编,使类成员函数代替全局函数(静态函数)[收集].pdf

    本文研究了C++ Hook(钩子)编程中,使类成员函数代替全局函数(静态函数)的技术。通过内联汇编,构造类对象独享的函数(委托),完成了类成员函数到普通全局函数的转化,并在Windows Hook(钩子)编程中得到成功的实践。...

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

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

    类中静态成员变量和普通变量的区别——实例代码(VS2010)

    在编程语言中,如C++或Java,类的成员变量分为两种主要类型:静态成员变量(Static Member Variables)和非静态成员变量(也称为实例变量)。这两种变量在使用和存储方式上存在显著差异,这对于理解和编写高效、清晰...

Global site tag (gtag.js) - Google Analytics