我们知道,可以在类结构内部初始化整型 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课外。
我很困惑。有人可以帮我解释一下吗?
类中的初始化主要用于获取常量表达式。为此,只有价值才重要。一旦获取对象的地址或将其绑定到引用,编译器也需要该对象的位置。这实际上就是定义所提供的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)