13.类中的static

1.基本

Static成员函数没有this指针,可以通过类名::函数名(参数)的形式来调用。
 
 
2.
   1static成员的名字是在类的作用域中,因此可以避免与其他类的成员或全局对象名字冲突。
      2)可以实施封装。Static成员可以是私有成员,全局对象不可以。???
   3)通过阅读程序容易看出static成员是与特定类关联的。
3.可以通过作用域操作符直接从类调用static成员,引用或指针调用。
4. 
当在类外部定义static成员是,无需重复指定static关键字,只出现在类定义体内部。
static成员函数没有this指针。
static成员函数不能声明为const,因为static成员函数不是任何对象的组成部分。(const对象调用const成员函数)
static成员函数不能声明为虚函数。
5.
Static数据成员可以声明为任意类型,可以是常量、引用、数组、类类型。
static数据成员必须在类定义体的外部定义一次(仅一次)
static数据成员不是通过构造函数初始化,而是应该在定义时进行初始化。
6.静态成员只能通过静态成员函数访问。
7.Static数据成员的类型可以是该成员所属的类类型。非static成员被限定声明为自身类对象的指针或引用。例如:

 
Code:
  1. Class Bar{  
  2. Private:  
  3.   static Bar mem1;  
  4.   Bar * mem2;  
  5.   Bar &mem3;  
  6.   Bar mem4;//error  
  7. };

8.

 

static数据成员不能用作默认实参。
如:
Code:
  1. class Screen  
  2. {  
  3. public:  
  4.     Screen& clear(char = bkground);  
  5. private:  
  6.     char bkground = ‘#’;  
  7. };  
  8. //1>error C2864: “Screen::bkground”: 只有静态常量整型数据成员才可以在类中初始化  
  9. //1>error C2648: “Screen::bkground”: 将成员作为默认参数使用要求静态成员  
  10.   
  11. class Screen  
  12. {  
  13. public:  
  14.     Screen& clear(char = bkground);  
  15. private:  
  16.     static const char bkground = '#';  
  17. };//不再报错  
 
 
 

 

Static成员是与类关联的,不与该类的对象关联。因此一个类的所有对象可以通过定义static成员共享数据。
Static成员包括static成员变量和static成员函数。
 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值