Есть ли разница между заданным пользователем конструктором по умолчаниюРазница между конструктором по умолчанию (определяемым пользователем) и конструктором с аргументами по умолчанию?
class Simple
{
public:
Simple() {}
};
и определенный пользователем конструктором, который принимает несколько аргументов, но имеет значение по умолчанию для каждого из них
class WithDefaults
{
public:
WithDefaults(int i = 1) {}
};
кроме этого WithDefaults
может также быть построено с явным значением для i
?
В частности, мне интересно, насколько эти два конструктора играют тот же самый бросок конструктора по умолчанию для обоих, или если есть тонкие различия между свойствами классов?
Другими словами, является конструктором, который имеет значения по умолчанию для всех своих аргументов конструктора по умолчанию во всех отношениях?
Я ожидал, что это будет дубликат, на самом деле, но я не могу найти ответ нигде. – MicroVirus
Это почти * ответ в [Параметры по умолчанию с конструкторами C++] (http://stackoverflow.com/questions/187640/default-parameters-with-c-constructors), я думаю, но я не уверен. – MicroVirus
В изоляции, я думаю, классы одинаковы. Они могут действовать по-разному, когда учитываются преобразования. Ссылка на второй комментарий от @MicorVirus объясняет это далее. –