读书笔记--static类成员

  static数据成员独立于该类的任意对象存在,每个数据成员是与该类关联的对象,并不是与该类的对象相关联.
  例如,static数据成员的类型可以是该成员所属的类类型,非static成员被限定声明为其自身类对象的指针或引用.
class Bar
{
 private:
   static Bar men1;//OK
   Bar *men2;//OK
   Bar men3;//error
};
 
  static数据成员可做默认实参,非static数据成员不能做默认实参,它的值不能独立于所属兑现而使用.
class Screen
{
 public:
   Screen &Clear( char=background );
 private:
   static const char background='#';
};

  static函数没有this指针:因为static成员是类的组成部分但不是任何对象的组成部分.通过使用非static成员现实或隐式地引用this是一个编译时错误.
 
  static数据成员必须在类定义体的外部定义,因为static成员不是通过类构造函数进行初始化而是自定义进行的.但有个特殊:const static成员只要初始化式是一个常量表达式,就在类的定义体中进行初始化.
class Account
{
 private:
   static int interest_rate;
   static const int period=30;//static const
};

int Account::inetest_rate=10;//static
const int Account::peried;//static const

  一个类的静态成员函数不能相非静态成员函数那样"默认调用"它的非静态成员函数(因为静态成员函数没有隐含的this指针)在一个类的静态成员函数中,只要通过某种方式得到了一个指向本类型的对象的指针,并且有合适的access level.就可以对此对象调用其非静态成员函数.
  作用:
       1.可以用来保存对象的个数
       2.作为标记,标记一些动作是否发生.比如:文件的打开状态
       3.存储.链表的第一个或者最后一个的内存地址 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值