C++中类的静态成员3-1

C++类的普通成员变量与成员函数是与该类的对象有关,类的静态成员与对象无关,而与该类本身相关。

1 静态成员的声明

使用关键字static修饰的成员是类的静态成员。静态成员可以被声明成public或private,静态成员可以是常量、引用、指针、类类型和函数等。

2 静态成员的定义

2.1 静态函数的定义

2.1.1 类外部定义静态函数时不能使用static

可以在类的内部定义静态函数,也可以在类的外部定义静态函数。需要注意的是,static关键字只能在类内部出现,而在类外部定义静态函数时,不能重复使用static。

class myClass
{
  static void myFunc1()
  {
  };
  static void myFunc2();
};

void myClass::myFunc2()
{
}

其中,myFunc1()和myFunc2()是myClass类的静态成员函数,其中myFunc1()在myClass类内部定义,myFunc2()在myClass类外部定义,定义myFunc2()时,不能用static来修饰该函数,如果添加了static关键字,编译器的报错信息为“error C2724: “myClass::myFunc2”:“static”不应在文件范围内定义的成员函数上使用”。

2.1.2 类外部定义静态函数时可以直接使用类成员

void myClass::myFunc2()
{
  myFunc1();
}

myFunc2是在myClass类外部定义的静态成员函数,在该函数中可以直接使用myClass类的其他成员。因为myFunc2()内部就属于myClass类的作用域之内了。

2.2 静态成员变量的定义

2.2.1 在类外对静态成员变量进行定义

定义类的静态成员变量时,不能在声明的时候直接定义。

class myClass 
{
  static int i = 1;
};

此时编译器报错的信息为“error C2864: “myClass::i”: 带有类内初始值设定项的静态 数据成员 必须具有不可变的常量整型”。必须在类外对静态成员进行定义。

class myClass 
{
  static int i;
};
int myClass::i = 1;

2.2.2 不能在构造函数的初始化列表中对静态成员变量进行定义

C++类的静态成员与类的对象无关,因此不能在类的构造函数的初始化列表中中定义静态成员变量。

class myClass 
{
  public:
    static int i;
    myClass() :i(1) 
    {
    }
};

此时,报错信息为“error C2438: “i”: 无法通过构造函数初始化静态类数据”。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值