При написании шаблона я хочу инициализировать мою переменную значением, которое служит нулевым или нулевым типом данных. Если я установлю его на 0x00, это будет служить нулем / NULL для любого типа?
например
Это шаблон объявления
template <class T>
...
T A=0x00;
Теперь, если я определю экземпляр типа T => std :: string, приведенный выше оператор будет NULL
?
Как насчет «int
» а также «unsigned int
«. Для обоих он служит» 0 «?
использование Инициализация значения:
T A = T(); // before C++11
T A{}; // C++11 and later
Эффекты инициализации значения:
1) если T является типом класса с хотя бы одним предоставленным пользователем конструктором любого вида, вызывается конструктор по умолчанию;
(до C ++ 11)1) если T является типом класса без конструктора по умолчанию или с предоставленным пользователем или удаленным конструктором по умолчанию, объект инициализируется по умолчанию;
(начиная с C ++ 11)2) если T является типом класса без объединения без каких-либо предоставленных пользователем конструкторов, каждый элемент нестатических данных и компонент базового класса T инициализируется значением;
(до C ++ 11)2) если T является типом класса с конструктором по умолчанию, который не предоставлен и не удален пользователем (то есть это может быть класс с неявно определенным или дефолтным конструктором по умолчанию), объект инициализируется нулями, а затем инициализируется по умолчанию, если у него есть нетривиальный конструктор по умолчанию;
(начиная с C ++ 11)3) если T является типом массива, каждый элемент массива инициализируется значением;
4) в противном случае объект инициализируется нулями.