5.C++静态成员

        在C++类中声明成员时,加上static关键字声明的成员叫静态成员。包括静态成员变量和静态成员函数(方法)。

        

一.静态成员变量:

class Person
{
    public:
        int a;        //普通成员变量
        static int b; //静态成员变量
};

        静态成员变量特点:

                1.在编译阶段分配内存。

                2.类内声明,类外初始化。

                3.所有对象共享同一份数据。

                4.静态成员变量也是有访问权限,私有的成员变量无法再类外访问!

 

1.类内声明,类外初始化:

class Person
{
    public:
        int a = 10;        //普通成员变量在类内初始化

        static int b; //静态成员变量只能在类内定义,到类外初始化
};

int Person :: b = 20; //类外初始化时不用再写static

2.所有对象共享同一份数据:

class Person
{
    public:
        int a = 10;        //普通成员变量在类内初始化

        static int b; //静态成员变量只能在类内定义,到类外初始化
};

int Person :: b = 20; //类外初始化时不用再写static


void test()
{
	Person p1;
	Person p2;
    对象p1和p2都共享静态成员变量b
	cout << "p1.b = " << p1.b << endl;
	cout << "p1.b = " << p2.b << endl;

    //p2修改b的值,p1在使用时的结果是p2修改后的值
	p2.b = 30;
	cout << "修改后p1.b = " << p1.b << endl;
	cout << "修改后p2.b = " << p2.b << endl;
}

 输出结果:

p1.b = 20
p1.b = 20        
修改后p1.b = 30
修改后p2.b = 30

3.静态成员变量的两种访问方式:

        1.通过对象访问。

        2.通过类名访问。

class Person
{
    public:
        int a = 10; 
        static int b;
};
int Person :: b = 20; 


void test()
{
	Person p1;
	cout << "p1.b = " << p1.b << endl;  //1.通过对象访问。
	cout << "Person::b = " << Person::b << endl;  //2.通过类名访问。
}

输出结果:

p1.b = 20
Person::b = 20  

 

 

 

二.静态成员函数:

class Person
{
    public:
        static void func()
        {
            cout << "func()的调用" << endl;
        }
};

        静态成员函数特点:

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

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

                3.静态成员函数也是有访问权限,私有的成员函数无法再类外访问!

 

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

class Person
{
    public:

        //静态成员函数
        static void func()
        {
            cout << "func()的调用" << endl;
        }
};


void test()
{
	Person p1;
	Person p2;
    //1.对象p1和p2都共享静态成员函数func()
	p1.func();
    p2.func();
}

输出结果:

func()的调用
func()的调用

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

class Person
{
    public:
        //静态成员变量
        static int b;

        //静态成员函数
        static void func()
        {
            cout << "func()调用静态成员变量b的值为:" << endl;
            cout << b << endl;
        }
};

int Person::b = 10;

void test()
{
	Person p1;
	p1.func();
}

输出结果:

func()调用静态成员变量b的值为:
10

3.静态成员的两种访问方式:

        1.通过对象访问。

        2.通过类名访问。

p1.func();1.通过对象访问。
Person::func();//2.通过类名访问。

 

 

 

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuga...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值