Sad*_*que 7 c++ visual-c++ c++11
我最近发布了一个问题: 静态类成员的初始化.
现在请检查此代码:
#include<iostream>
class A
{
static int obj_s;
public:
A()
{
obj_s++;
std::cout << A::obj_s << "\nObject(s) Created\n";
}
};
int A::obj_s = 0;
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
即使一个人没有创建任何A类对象,使该成员obj_s保持一个值0- 自定义之后是不是需要内存?
显然,这需要记忆.而int A::obj_s=0正是它的作用:它定义了它的记忆沿着变量.实际上,当我们说我们定义了一个变量时X,这意味着我们定义了一个内存sizeof(X),以及我们标记为的内存区域X.
更多关于静态成员:
A::obj_s是该类的静态成员A.并且静态成员不存在任何实例.他们不是实例的一部分A.
标准中的§9.4.2/ 3和7,
一旦定义了静态数据成员,即使没有创建其类的对象,它也存在.
静态数据成员的初始化和销毁与非本地对象完全相同(3.6.2,3.6.3).
在这里阅读我的完整答案:
| 归档时间: |
|
| 查看次数: |
6770 次 |
| 最近记录: |