静态成员函数

02-8-2 静态成员函数

静态成员函数的特点:

  • 所有对象共享同一个函数
  • 静态成员函数只能访问静态成员变量。

同静态成员变量一样,静态成员函数也有两种访问方式

  1. 通过对象访问:

    #include 
    using namespace std;
    class test
    {
    public:
    static void func()
    {
        cout << "静态成员函数的调用" << endl;
    }
    };
    int main()
    {
    class test t1;
    t1.func();
    return 0;
    }
  2. 通过类名访问

    #include 
    using namespace std;
    class test
    {
    public:
    static void func()
    {
        cout << "静态成员函数的调用" << endl;
    }
    };
    int main()
    {
    test::func();
    return 0;
    }

我们现在来讲一下静态成员函数的特点:

  1. 所有对象共享同一个函数

    #include 
    using namespace std;
    class test
    {
    public:
    static void func()
    {
        cout << "静态成员函数的调用" << endl;
    }
    };
    int main()
    {
    class test t1;
     class test t2;
     t1.func();
     t2.func();
    return 0;
    }

    运行结果:

    静态成员函数的调用
    静态成员函数的调用

    可以看到。我们在这里创建了两个对象,为p1p2。无论是使用p1还是p2调用静态成员函数func()都可以成功调用。

  2. 静态成员函数只能访问静态成员变量。

    #include 
    using namespace std;
    class test
    {
    private:
    static int m_A;
    int m_B;
    public:
    static void func()
    {
        m_A = 200;
        //m_B = 200;
    }
    };
    int test::m_A = 100;
    int main()
    {
    return 0;
    }

    静态成员函数不可以访问非静态成员变量。如果我们上面注释掉的那一行,如果去掉注释,那么就会报错:

    非静态成员引用必须与特定对象相对

    因为非静态成员变量的访问一定要有一个对象,比如t1.m_B。但是静态成员函数的调用可以不通过对象,比如:test::func();。而静态成员变量是这个类下的所有对象都共享的,所以使用静态成员函数可以访问静态成员变量。

静态成员函数也是有访问权限的。比如说:

#include <iostream>
using namespace std;
class test
{
public:
    static void func1()
    {
        cout << "这是公共的静态成员函数的调用" << endl;
    }
private:
    static void func2()
    {
        cout << "这是私有的静态成员函数的调用" << endl;
    }
};
int main()
{
    test::func1();
    //test::func2();
    return 0;
}

我们将test::func2();注释掉了,这是因为如果去掉注释,则会报错:

函数 "test::func2" (已声明 所在行数:xx) 不可访问

总结:

  1. 静态成员函数的特点
    • 所有对象共享同一个函数
    • 静态成员函数只能访问静态成员变量。
  2. 静态成员函数的访问方式
    • 通过对象进行访问
    • 通过类名进行访问
  3. 静态成员函数也遵守相应的权限管理。
文章「静态成员函数」,由本站用户「Admin」发布。文章仅代表Admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/880」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
无评论:-)

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇