C++类的静态成员变量 & 函数示例(个人笔记)

类的静态成员变量 & 函数示例

#include <iostream>

using namespace std;

class A{
public:
    A(int tmp) : ca(tmp){sa++;}//构造函数可以访问静态成员变量
    static void sfunc1(){cout<<sa<<endl;}//静态成员函数可以访问静态成员变量
//    static void sfunc2(){cout<<ca<<endl;}//静态成员函数不能直接访问普通成员变量(函数)
    static void sfunc3(A& a){cout<<a.ca<<endl;}//静态成员函数间接访问普通成员变量(函数)
    void cfunc1(){cout<<sa<<endl;}//普通成员函数可以访问静态成员变量
    void cfunc2(){sfunc1();}//普通成员函数访问静态成员函数
    void cfunc3(){cout<<ca1<<endl;}//普通成员函数访问普通成员变量

private:
    int ca;//普通成员变量
    static int sa;//静态成员变量
    
protected:
    int ca1;//普通成员变量
    static int sa1;//静态成员变量
};

class B : public A{
public:
    B(int tmp) : A(tmp){cout<<sa1<<endl;}//子类构造函数访问父类静态成员变量(函数)
    static void sf1(){cout<<sa1<<endl;}//子类静态成员函数函数访问父类静态成员变量(函数)
    //static void sf2(){cout<<ca1<<endl;}//子类静态成员函数函数不能访问父类普通成员变量(函数)
    void cf1(){cout<<sa1<<endl;}//子类普通函数可以访问父类静态成员变量(函数)
    void cf2(){cout<<ca1<<endl;}//子类普通成员函数访问父类普通成员变量(函数)
};

int A::sa = 0;//静态成员变量初始化
int A::sa1 = 0;//静态成员变量初始化,未初始化将报“undefined reference to 'A::sa1'”

int main(){
    A::sfunc1();//通过类名(作用域)访问静态成员函数
    A a(20);//创建对象a
    a.sfunc1();//通过对象名访问静态成员函数
    a.cfunc1();//通过对象名访问普通函数
    a.cfunc2();//通过对象名访问普通成员函数
    A::sfunc3(a);//静态成员函数间接访问普通成员变量
    B b(30);//创建对象b
    b.cfunc3();
    return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值