Как повторно проинициализировать переменную конструктором?

dimkaok

Создал в классе переменную и проинициализировал ее в конструкторе.
class A {
 
     int var;
 
  public:
 
     A() : var(0)
};
Потом изменил значение переменной.
var = 1;
Можно-ли как-то для этой переменной снова вызвать конструктор, чтобы присвоить ей начальное значение?
3 ответа

dimkaok

Неа. Но можно сделать метод, устанавливающий начальное состояние объекта и вызывать его как в конструкторе, так и в методе.
class A {
 public:
  A() : {
    initializeVariables();
  }
  void reset() {
    initializeVariables();
  }
 private:
  void initializeVariables() {
    size = 0;
  }
  int size;
};


dimkaok

Неа. Но можно сделать метод, устанавливающий начальное состояние объекта и вызывать его как в конструкторе, так и в методе.
А жаль Ладно, будем так делать


dimkaok

Можно сделать вид вызова конструктора. Если интересно:
#include <iostream>
 
using namespace std;
 
struct A {
    int a;
    A( int a ) : a(a) {}
    void operator ()( int _a ) { a = _a; }
    int & operator ()() { return a; }
};
 
int main()
{
    A a( 10 );
    a( 11 ); // присваиваем новое значение
    cout << a() << endl;
    return 0;
}