Почему не могут статические члены данных инициализироваться в списке инициализации конструктора, в то время как это может быть сделано в определении конструктора?Инициализация статических элементов C++ в списке инициализации
ответ
Вы ошибаетесь. Они могут быть инициализированы в одной единице перевода за пределами определения класса *, и они могут быть , назначенные в конструкторе.
Вы можете только инициализировать текущий элемент класса не static
в списке инициализации конструктора.
* Исключения применяются
Статические члены находятся в области видимости класса т.е. они являются переменными класса не экземпляр variable.We инициализации экземпляров с помощью конструктора. Поскольку статическая переменная не для экземпляра, а для всего класса, статические переменные не инициализируются конструктором. Благодаря
Давайте попробуем это более конкретный
#include <iostream>
using namespace std;
class classWithStaticVariable
{
static int aStaticVariable;
int aNormalInstanceVariable;
public:
classWithStaticVariable(int aParameter)
{
aNormalInstanceVariable=aParameter;
aStaticVariable=aNormalInstanceVariable;/////It is possible to assign value to static data member in constructor but not possible to init it.
}
void aTestFunctionJustToPrint()
{
cout<<aStaticVariable<<aNormalInstanceVariable;
}
};
int classWithStaticVariable::aStaticVariable=1;
int main()
{
classWithStaticVariable t(2);
t.aTestFunctionJustToPrint();
}
Статическая переменная являются переменная класса не переменная экземпляра. Поэтому статическая переменная должна быть инициализирована с помощью определения класса. Снова конструктор используется для инициализации переменной экземпляра для объекта при его создании. Все это. Спасибо
- 1. Инициализация статических элементов C++
- 2. Инициализация инициализации статических данных
- 3. Инициализация статических массивов отдельных элементов в C++
- 4. Инициализация объектов статических элементов
- 5. Инициализация статических элементов в PHP
- 6. Инициализация статических членов класса в функции инициализации
- 7. Объявление и инициализация статических элементов
- 8. Инициализация статических элементов шаблонного класса
- 9. Инициализация инициализации C++
- 10. В классе инициализация статических элементов данных
- 11. Инициализация статических полей C#
- 12. Инициализация последовательности семян в списке инициализации
- 13. Инициализация статических переменных в C
- 14. Инициализация инициализации C++
- 15. Инициализация ссылочных переменных в списке инициализации
- 16. Инициализация статической карты с использованием статических элементов
- 17. C++ 14 Инициализация унаследованный элемент в списке инициализации конструктора класса
- 18. C++: Инициализация опорного элемента для объекта, созданного в списке инициализации
- 19. инициализация статических переменных
- 20. C статических переменных и инициализация
- 21. инициализация статических членских переменных C++
- 22. Инициализация статических массивы указателей
- 23. Нитевидная инициализация статических переменных
- 24. Порядок инициализации статических типов
- 25. C++ Инициализировать указатель в списке инициализации члена
- 26. инициализации класса массива в списке инициализации C++
- 27. C++ Инициализация статических переменных (еще раз)
- 28. Как гарантировать упорядочение инициализации константных статических элементов в шаблонных структурах
- 29. C++ 11 стоимость инициализации до агрегировать инициализация
- 30. Порядок инициализации статических переменных
Как вы предлагаете инициализировать элемент данных в теле конструктора? – chris