Есть ли правило для решения, когда использовать старый синтаксис ()
вместо нового синтаксиса {}
?
Для инициализации структуры:
struct myclass
{
myclass(int px, int py) : x(px), y(py) {}
private:
int x, y;
};
...
myclass object{0, 0};
Теперь, например, в случае vector
он имеет много конструкторов. Всякий раз, когда я делаю следующее:
vector<double> numbers{10};
Я получаю вектор элемента 1 вместо одного с 10 элементами, поскольку один из конструкторов:
explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );
Мое подозрение в том, что всякий раз, когда класс определяет конструктор initializer list
, как в случае с вектором, он вызывается с синтаксисом {}
.
Итак, это то, что я считаю правильным. то есть Должен ли я вернуться к старому синтаксису только тогда, когда класс определяет конструктор списка инициализаторов для вызова другого конструктора?, например. для исправления приведенного выше кода:
vector<double> numbers(10); // 10 elements instead of just one element with value=10