В 2018 году с C ++ 11 и выше, вспомогательные функции init () считаются плохими?

code спросил: 26 декабря 2017 в 07:50 в: c++

Pre C ++ 11 у вас не было нестационарной инициализации члена или у вас было делегирование конструкции, поэтому люди часто использовали частные вспомогательные функции, чтобы помочь с инициализацией для уменьшения репликации кода.

Является ли этот хороший код в 2018 году?

class A  {
  int a1 = 0;
  double a2 = 0.0;
  string a3 = "";
  unique_ptr<DatabaseHandle> upDBHandle;  void init(){
      upDBHandle = open_database(a1, a2, a3);
  }public:
    A() { init(); }
    explicit A(int i):a1(i) {  init(); }
    explicit A(double d):a2(d) {  init(); }
    explicit A(std::string s):a3(std::move(s)) {  init(); } 
    A(int i, double d, std::string s) : a1(i), a2(d), a3(std::move(s)) { init(); }
};

Как можно улучшить этот код?

0 ответов