Компилятор автоматически переписывает компилятор в это?
Stack(const Stack& s) : size(s.size), x(new int[size]) {}
номер
Stack(const Stack& s) : x(new int[size=s.size]) {}
может быть как
Stack(const Stack& s) : size(), x(new int[size=s.size]) {}
но на самом деле это не так, поскольку на самом деле запись size()
будет иметь значение для его инициализации, то есть инициализируется с нуля, но поскольку компилятор инициализирует инициализацию, инициализация по умолчанию [1] происходит, то есть не инициализируется. Затем вы присваиваете ему значение в инициализации x
. Это «безопасно», то есть в данном случае это работает, но я бы не рекомендовал это.
Stack(const Stack& s) : size(s.size), x(new int[s.size]) {}
инициализирует обоих членов, и если вы когда-нибудь измените их порядок в классе, у вас все равно будет правильное поведение.