【发布时间】:2012-04-04 20:59:16
【问题描述】:
众所周知,可以在类结构内部初始化整型const静态成员。这在初始化后的类结构中使用常量时很有用。例如,它可以用作int的大小大批。 看下面的代码:
class MyClass{
static const int num = 100;
int elems[num];
...
};
但是我们还是要在类定义之外定义成员num:
const int MyClass::num;
我不知道为什么我们必须这样做。 有人能告诉我为什么吗? 非常感谢。
另外,我写了如下代码:
#include <iostream>
using namespace std;
class MyClass{
public:
MyClass()
{
cout << "instruct class MyClass!" << endl;
}
static const int num = 100;
int elems[num];
};
//const int MyClass::num;
int main()
{
MyClass a;
const int *b = &(a.num);
cout << "&(a.num): " << &(a.num) << endl;
cout << "a.num: " << a.num << endl;
cout << "*b: " << *b << endl;
}
它在 Visual Studio 2008 上运行良好:
但是我已经删除了定义类外成员num的代码。
我很困惑。有人可以帮我解释一下吗?
【问题讨论】:
标签: c++ object initialization static-members