При делегировании конструкторов, лучше ли создавать цепочку или каждый конструктор должен вызывать один общий конструктор? - PullRequest
0 голосов
/ 24 января 2019

У меня есть класс с множеством возможных комбинаций параметров в конструкторе, который не позволяет просто перечислить все из них в качестве параметров по умолчанию. Я могу использовать цепочку вызовов конструктора следующим образом:

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){}
}

Есть ли преимущество в том, чтобы делать одно над другим?

Поскольку тело делегирующих конструкторов пусто, оно изменяет скомпилированную программу или влияет на производительность во время выполнения, и если это так, может ли компилятор оптимизировать ее для лучшего варианта?

...