静态成员函数的使用

class A
{
public:
    int sumShow;//sumShow是成员变量
    A(){};
      int func(){return A::sum;}  // 通过公有的函数才可以访问私有的静态成员变量
    ~A(){};
    static int show(){return sum ;}  // 静态函数可以访问静态成员变量
     //static int show(){return sumShow;}  静态函数无法访问成员变量
private:
    static int sum;//私有的静态成员变量
};

int A::sum=100;
int main()
{
    A a; // 只有通过创建类对象,通过公有的函数才可以访问私有的静态成员变量

  int num=a.func();
    cout<<"A::sum的值为"<<num<<endl;
    //cout<<"A::sum的值为"<<A::sum<<endl;
    return 0;
}

时间: 2024-10-12 15:38:40

静态成员函数的使用的相关文章

成员函数指针和指向静态成员函数的指针

#include <iostream> using namespace std; class Student{ public:     Student(const string& name):m_name(name){}     void who(void){         cout << m_name << endl;     }     string m_name;     static int s_add(int a,int b){         re

静态成员函数不能采用const修饰的原因

静态成员函数不能用const修饰 ,也不能存取nonstatic数据 C++中静态成员函数不能用const修饰的原因: static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数.这意味着一个静态成员函数只能访问它的参数.类的静态数据成员和全局变量. 不能用const的原因:一个静态成员函数访问的值是其参数.静态数据成员和全局变量,而这些数据都不是对象状态的一部分.而对成员函数中使用关键字const是表明:函数不会修改该函数访问的目标对象的数据成员.既然一个静态成员函

C++里的静态成员函数不能用const的原因

From http://blog.csdn.net/freeboy1015/article/details/7634950 static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数.这意味着一个静态成员函数只能访问它的参数.类的静态数据成员和全局变量. 不能用const的原因: 这是C++的规则,const修饰符用于表示函数不能修改成员变量的值,该函数必须是含有this指针的类成员函数,函数调用方式为thiscall,而类中的static函数本质上是全局函数,调用规

回调函数中调用类中的非静态成员变量或非静态成员函数

有关这方面的问题,首先说一点: 回调函数必须是静态成员函数或者全局函数来实现回调函数,大概原因是普通的C++成员函数都隐含了一个函数参数,即this指针,C++通过传递this指针给成员函数从而实现函数可以访问类的特定对象的数据成员.由于this指针的原因,使得一个普通成员函数作为回调函数时就会因为隐含的this指针问题使得函数参数个数不匹配,从而导致回调函数编译失败. 基于上面的理论,如何在类中封装回调函数呢? 回调函数只能是全局函数或者静态成员函数,但是由于全局函数会破坏封装性,所以只能用静

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

静态成员:在定义前面加了static 关键字的成员.如下: class CRectangle { public: CRectangle(); ~CRectangle(); static void PrintTotal(); private: int w, h; static int nTotalArea; static int nTotalNumber; }; CRectangle::CRectangle(int w_, int h_) { w = w_; h = h_; nTotalNumbe

C++学习10 static静态成员变量和静态成员函数

一般情况下,如果有N个同类的对象,那么每一个对象都分别有自己的成员变量,不同对象的成员变量各自有值,互不相干.但是有时我们希望有某一个或几个成员变量为所有对象共有,这样可以实现数据共享. 可以使用全局变量来达到共享数据的目的.例如在一个程序文件中有多个函数,每一个函数都可以改变全局变量的值,全局变量的值为各函数共享.但是用全局变量的安全性得不到保证,由于在各处都可以自由地修改全局变量的值,很有可能偶然失误,全局变量的值就被修改,导致程序的失败.因此在实际开发中很少使用全局变量. 如果想在同类的多

第26课 类的静态成员函数

1. 静态成员函数 (1)静态成员函数是类中特殊的成员函数,属于整个类所有 (2)可以通过类名直接访问公有静态成员函数 (3)可以通过对象名访问公有静态成员函数 (4)静态成员函数的定义:直接通过static关键字修饰成员函数 [编程实验]静态成员函数示例 #include <stdio.h> class Test { private: int i; static int s_j; public: int getI(); static void StaticFunc(const char* s

[email&#160;protected]类的静态成员变量和静态成员函数

参考: http://blog.csdn.net/morewindows/article/details/6721430 http://www.cnblogs.com/lzjsky/archive/2011/01/24/1943199.html 分析Qt程序时,碰到下面代码. QString str = QString("QFrame#avatar{border-image:url(%1.jpg)}").arg( QString::number(i) );   静态成员变量 静态成员函

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

最近一直看c++相关的项目,但总是会被c++类中的静态成员变量与静态成员函数的理解感觉很是模糊,不明白为什么类中要是用静态成员变量.于是在网上搜集了一些资料,自己再稍微总结下. 静态成员的概念: 静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员先于类的声明而存在于内存,也可以根据类声明的对象来访问.而非静态成员必须实例化之后才会分配内存. 非静态成员的概念: 所有没有加static的成员都是非静态成员.而类被实例化后,可以通过实例化的类

静态成员函数与pthread_create,纯虚函数匹配使用实例

最近在浏览朋友写的代码,发现有一个细节非常值得学习,在这里将代码贴出来简单分享一下: #ifndef THREAD_H_ #define THREAD_H_ #include <pthread.h> #include <stdexcept> #include "Copyable.h" /* * 这个线程类是个抽象类,希望派生类去改写它 */ class Thread : public Copyable{ public: Thread(); virtual ~Th