静态成员函数和非静态成员函数的区别

静态成员函数
1.所有对象共享同一个函数
2.静态成员函数只能访问静态成员变量
3.静态成员函数也有访问权限,写在private 里,类外是访问不到的

对静态成员函数和非静态成员函数的访问方式不同

对于非静态成员变量需要先创建对象,在通过对象进行访问函数

class MyClass {
public:
    void func();
};

int main() {
    MyClass a;
    a.func();
    return 0;
}

对于静态成员变量,可以使用类名和对象进行访问

class MyClass {
public:
    static void func();
};

int main() {
    MyClass a;
    a.func();//对象访问
    MyClass::func();//类名访问
    return 0;
}

非静态成员函数它们是针对类的每一个对象而存在的,只有创建了类的对象才能调用这些函数,非静态成员函数可以访问类中的所有成员变量和成员函数,包括非静态成员变量和函数,也包括静态成员变量和函数。

静态成员函数内存只有一份,而非静态成员函数的内存有多份,每个对象都有一份,静态成员函数只能访问类中的静态成员变量静态成员函数,无法访问非静态成员变量和函数,静态成员函数可以脱离类的对象而单独存在

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值