Dlaczego stały element danych klasy musi być zainicjowany w konstruktorze?

Chcę wiedzieć, dlaczego stały element danych klasy musi być zainicjowany w konstruktorze i dlaczego nie gdzie indziej? Jaki jest wpływ takiego działania i nie robienia tego?

Widzę to tylkostatyczne stałe dane całkowe może być zainicjowany wewnątrz klasy innej niż ta, której nie można zainicjować wewnątrz klasy.

na przykład: - Załóżmy, że poniżej znajduje się moja deklaracja klasy

class A{
     int a; // This we can initialize at the constructor or we can set this member by calling "vSet" member function
     const int b;
     static const int c = 10; //This works fine
public:
     A();
     ~A();
     void vSet(int a);
     int iAdd();
     void vDisplay();    
};

A konstruktor jest zdefiniowany jak wspomniano poniżej: -

Edytowana sekcja: Jak poprzedni przykład definicji konstruktora był nieprawidłowy

 A::A():a(1),b(9){}

Proszę, popraw mnie jeśli się mylę. Z góry dziękuję.

questionAnswers(7)

yourAnswerToTheQuestion