C++静态数据成员/静态函数成员总结

++静态数据成员/静态函数成员总结

一、静态数据成员
1.几种错误用法总结
class A
{
    static int a;
    void test()
    {
        int b = a;//错误,因为没有定义a,会提示找不到a
    }
}
class A
{
    static int a = 2;//错误,非const静态数据成员不能在类体中初始化
}
class A
{
    static const int a = 2;
    void test()
    {
        int b = a;//错误,虽然static const成员变量可以再类体中初始化,但仍需
要在类外定义,且不能再次初始化
    }
}
const A::a[4];
class A
{
    static const char a[4] = "err";//错误,只有有序的const静态数据成员可在类
体中初始化
}
2.正确用法例子:
int A::a = 2;
const int A::b;
const int A::c("err");
class A
{
    static int a;
    static const int b = 2;
    static const char c[5];
}
3.可以通过const方法修改静态数据成员的值。
如果是public静态数据成员,也可以通过对象或者类域修改。
4.静态数据成员所有类共享,包括子类
5.不要在头文件中定义静态数据成员,否则可能会出现多次定义情况。
6.静态数据成员可以成为成员函数的可选参数,而普通数据成员则不可以
7.静态数据成员的类型可以是所属类的类型,而普通数据成员则不可以。普通数据成员
的只能声明为所属类类型的指针或引用
class A
{
    static A a;//可以
    A b;//不可以
}
二、静态函数成员
1.只能访问静态数据成员
2.静态成员函数不能同时声明成const, virtual,volatile类型。
3.静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用类成员函数
指针来储存。
class A
{
    static int func1();
    int func2();
}
int (*psf)() = &A::func1;
int (A::*pf)() = &A::func2;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值