• 第26课.类的静态成员函数


    1.静态成员函数

    a.静态成员函数是类中特殊的成员函数(静态成员函数没有隐藏的this参数,不能直接去访问普通的成员函数和成员变量)
    b.静态成员函数属于整个类所有
    c.可以通过类名直接访问公有静态成员函数(变量)
    d.可以通过对象名访问公有静态成员函数(变量)

    静态成员函数的定义:
    直接通过static关键字修饰成员函数

    class Test
    {
    public:
        static void Func1();        //声明
        static void Func2();
    };
    
    int Test::Func2                //定义
    {
        return 0;
    }
    

    eg:

    #include <stdio.h>
    
    class Demo
    {
        int i;
        
    public:
        int getI();            //声明
        static void StaticFunc(const char *s);
        static void StaticSetI(Demo& d, int v);
    };
    
    int Demo::getI()        //定义
    {
        return i;
    }
    
    void Demo::StaticFunc(const char *s)
    {
        printf("StaticFunc: %s
    ", s);    
    }
    
    void Demo::StaticSetI(Demo& d, int v)
    {
        d.i = v;        //成员函数可以直接调用成员变量,就算它是private (注意静态成员函数的特殊性)
    }
    
    int main()
    {
        Demo::StaticFunc("main Begin...");        //通过类名调用
        
        Demo d;
        
        Demo::StaticSetI(d, 10);
        
        printf("d.i = %d
    ", d.getI());
        
        Demo::StaticFunc("main End...");
        
        return 0;
    }
    

    2.静态函数和普通成员函数的区别

    注意:静态成员函数不能直接访问普通的成员函数(变量),只能直接访问静态的成员函数(变量)

    访问普通成员变量(函数):
    a.可以通过对象名来间接访问
    成员变量:

    class t{
    private:
        int member;
    public:
        static int func(t obj){
        //return member;       不可以
        //return this->member; 不可以
        return obj.member;   //可以,通过对象名来访问
        }
    };
    

    成员函数:

    class A
    {
    public:
        static void f1();
        void f2();
    };
    
    void A::f1()
    {
        A a;
        a.f2();
    }
    void A::f2(){};
  • 相关阅读:
    二分图最大匹配
    Problems about trees
    Hackerrank Going to the Office
    多校题解
    HDU #2966 In case of failure
    K-D Tree
    UOJ #10 pyx的难题
    bzoj 1090 字符串折叠
    uva 1347 旅行
    bzoj 1059 矩阵游戏
  • 原文地址:https://www.cnblogs.com/huangdengtao/p/11847612.html
Copyright © 2020-2023  润新知