Следует ли определить элемент static const
вне определения класса, даже если он инициализирован внутри класса?определение static 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;
}
После комментирования // const int abc::period;
обе версии кода прекрасно работать на GCC 4.3.4. Поэтому я хочу спросить, почему работают обе версии, а какая стандартная?
+1 Для хорошей цитаты. – Mahesh
+2 для подробного объяснения – Ernie
В этом вопросе (который, безусловно, является дубликатом), я думаю, что интересно объяснить, что ** используется ** означает в контексте §9.4.2/4, поскольку оно не является интуитивным, и почему в противном случае определение не требуется. Первая часть как-то указана в *, потому что вы не принимаете адрес *, но я не уверен, что большинство людей поймут, что это приближение термина * used *. –