Как инициализировать в ноль / NULL в шаблоне

При написании шаблона я хочу инициализировать мою переменную значением, которое служит нулевым или нулевым типом данных. Если я установлю его на 0x00, это будет служить нулем / NULL для любого типа?

например

Это шаблон объявления

template <class T>
...
T A=0x00;

Теперь, если я определю экземпляр типа T => std :: string, приведенный выше оператор будет NULL ?

Как насчет «int» а также «unsigned int«. Для обоих он служит» 0 «?

4

Решение

использование Инициализация значения:

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) в противном случае объект инициализируется нулями.

10

Другие решения

Вы можете использовать

T t{};

за инициализация значения.

7

По вопросам рекламы [email protected]