C++学习专栏 static 关键字

Static关键字通常在类的成员函数和成员变量使用。

声明:

     注意:静态成员函数和变量不属于类的任一对象,但可通过对象、指针或引用进行访问,不能声明成 const,对于静态成员变量,成员函数可直接调用

      

class Account{
public:
  void calculate(){amount += amount *interestRate;}
private:
  static double interestRate;
}

定义:

   注意:一个静态成员只能定义一次,一般来说,静态成员只能在类外定义,类外不可重复static关键字,static只能出现在类的内部声明里,类外定义时需添加类作用域

我们可以通过在类外定义静态成员时访问类的私有成员

class Account{
public:
  void calculate(){amount += amount *interestRate;}
private:
  static double interestRate;
  static double initRate()
}

double Account::interestRate=initRate();

特殊情况下,我们可以为静态成员赋予const整数类型的类内初始值,但要求在静态成员必须是字面值常量类型的constexper。

class Account{
public:
  void calculate(){amount += amount *interestRate;}
private:
  static constexper int interestRate=30;//interestRate是常量表达式
}
constexper int Account::interestRate;   //初始值在类内定义

若想interestRate初始可被替换,则在类外赋初始值,若想不可被替换,则在类内赋初始值;

特殊应用场景:

   静态成员可以是不完全类型,即为所属类类型,而非静态成员只可声明为类的指针或引用;

   静态成员可以是函数的实参,而非静态成员不可,因其值本身就属于类的一部分。

clss Bar
{
public:
  Screen& clear(char = mem4);
//mem4是类中稍后声明的静态成员
private:
  static Bar mem1;   //正确:静态成员可以是不完全类型
  Bar  *mem2;        //正确:指针成员可以是不完全类型
  Bar  mem3;         //错误:数据成员必须是完全类型
  static const char mem4;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值