C++ primer 第七章之 类的静态成员

1.为什么需要静态成员?

对象与对象之间的成员变量是相互独立的,可以由地址看出,如下程序所示 ;

#include <iostream>
using namespace std;

class myClass{
public:
    int member;
};

int main()
{
    myClass a ,b;
    cout << "a成员变量的地址: "<<&a.member<<endl;
    cout << "b成员变量的地址: "<<&b.member<<endl;
    return 0;
}

 

要想共用数据,则需要使用静态成员和静态方法 ;

 

2.数据成员可以分为静态变量、非静态变量两种。

  • 静态成员:
    •  静态成员的定义和声明要加个关键static ;
    •    

      静态成员不能访问非静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存;
  • 非静态成员:
    •  非静态成员的生存期决定于该类的生存期.

 

3.初始化类的静态成员

静态成员变量的初始化与一般成员变量的初始化不同,即它的初始化格式为:

<数据类型><类名>::<静态成员变量> = <值>

 

4.类的静态数据成员有两种访问方式

  • 静态成员变量使用前必须先初始化 ;
  • 静态成员变量在类内声明,且必须带static关键字;在类外初始化,且不能带static关键字
  • 如果静态成员变量的访问权限允许的话,即为public成员,可在程序中,按上述格式来引用静态成员变量;
  • 把变量声明为私有静态成员后只能通过该类的公有成员函数来访问。在访问前还需要创建一个类的对象;
    #include <iostream>
    
    using namespace std;
    
    class A{
    public:
        int getx(){
            return A::x;
        }
    
        void setx(int i){
            A::x =i;
        }
    private:
        static int x;
    };
    
    int A::x ;//一定要在main函数之外声明;
    
    int main()
    {
    
        A a ;
        a.setx(2);
        cout<< a.getx();
        return 0;
    }
    

       

5.静态成员函数

静态成员函数与静态成员变量一样,都是在类的内部实现,属于类定义的一部分:

  • 出现在类体外的函数不能指定关键字static;
  • 静态成员之间可以互相访问,包括静态成员函数访问静态成员变量和访问静态成员函数;
  • 非静态成员函数可以访问静态成员函数和静态成员变量;
  • 静态成员函数不能访问非静态成员函数和非静态成员变量;
  • 静态成员函数在类内声明,且必须带static关键字;在类外实现,且不能带static关键字

 

转载于:https://www.cnblogs.com/chenjz1993/p/6754341.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值