Thinking In C++ 学习笔记(2)名字控制

Thinking In C++ 学习笔记(2)名字控制

 

1.       函数内部的静态变量

函数内部的static变量存储在静态数据区而不是栈中,只在第一次调用函数时初始化一次。

编译器会为没有初值的内部类型的静态变量赋值为零(转化为适当的类型)。

 

2.       函数内部的静态对象

程序第一次执行到静态对象的定义点时(且仅一次)会调用对象的构造函数。

 

3.       静态对象的析构函数

静态对象的析构函数在程序从main()退出或调用exit()时被调用。在静态对象的析构函数内部调用exit() 将会造成无穷递归,调用abort()不会。

静态对象的销毁与初始化顺序相反。

 

 

C++中的静态成员

类的静态成员存储在一块单独的静态存储区,不管创建了多少该类的对象。

 

1.       定义静态数据成员的存储

静态数据成员的定义必须出现在类的外部(不允许内联)而且只能定义一次,因此它通常放在类的实现文件中。

//*.h

Class Values{

       Static int size ;

};

//*.cpp

Int values::size = 10;

 

 

2.       静态数组的初始化

Class Values{

       Static const int size = 10;

       Static const int mem[];

};

Int Values::mem[] = { 10, 30, 67, 78};

Int man(){……}//end

内部类型的静态常量可以在类内部进行定义,但是对于其它静态对象或任意类型静态数组必须在类外部定义。

类内部的静态常量对象和对象的静态常量数组初始化必须在类的外部。

const成员数据是在构造函数初始化列表中初始化的。)

 

3.       静态成员函数

静态成员函数只能访问静态数据成员。它既不能访问非静态数据成员也不能访问非静态函数成员。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值