クラス内で初期化されていても、static const
メンバをクラス定義外に定義する必要がありますか? // const int abc::period;
をコメントした後クラス定義外の静的constの定義
#include<iostream>
using namespace std;
class abc
{
static const int period=5;
int arr[period];
public:
void display()
{
cout<<period<<endl;
}
};
const int abc::period;
int main()
{
abc a;
a.display();
return 0;
}
は、コードの両方のバージョンは、GCC 4.3.4で問題なく動作します。だから私はなぜ両方のバージョンが動作し、どちらが標準に準拠しているのか尋ねたいのですが?
+1いいですね。 – Mahesh
+詳細な説明のために – Ernie
この質問(確かに重複しています)では、直感的ではないので、§9.4.2/ 4の文脈で**使用されていることを意味するのは興味深いと思いますそうでなければ定義は必要ではない。最初の部分は、アドレス*を取っていないため*に何らかの形で記載されていますが、ほとんどの人がそれが*使用された用語の近似であることを認識するかどうかはわかりません。 –