У меня есть класс с множеством возможных комбинаций параметров в конструкторе, который не позволяет просто перечислить все из них в качестве параметров по умолчанию. Я могу использовать цепочку вызовов конструктора следующим образом:
class A{
A(obj a, obj b, obj c){/*code*/}
A(obj b, obj c):A(defaulta, b, c){}
A(obj c):A(defaultb, c){}
}
Или я могу каждый раз вызывать самый глубокий конструктор, например:
class B{
B(obj a, obj b, obj c){/*code*/}
B(obj b, obj c):B(defaulta, b, c){}
B(obj c):B(defaulta, defaultb, c){}
}
Есть ли преимущество в том, чтобы делать одно над другим?
Поскольку тело делегирующих конструкторов пусто, оно изменяет скомпилированную программу или влияет на производительность во время выполнения, и если это так, может ли компилятор оптимизировать ее для лучшего варианта?