Devo usare un costruttore solo per l'inizializzazione delle variabili in C++?

Devo usare un costruttore solo per l'inizializzazione delle variabili in C++?

Soluzione per Devo usare un costruttore solo per l'inizializzazione delle variabili in C++?
è riportato di seguito:

Sono nuovo di OOP in C++. Ho una classe che non ha bisogno di eseguire alcun codice né ha bisogno di alcun parametro quando viene creato l'oggetto, dovrei comunque scrivere un costruttore solo per l'inizializzazione delle variabili.
Posso farlo:

#include <iostream>

class Something
{
private:
    const char* msg = "Hewwo World"; // i can initialise here
public:
    void Print()
    {
        for (int i = 0; i < 11; ++i)
        {
            std::cout << *msg++;
        }
    }
};

int main()
{
    Something smth;
    smth.Print();
}

invece di questo:

#include <iostream>

class Something
{
private:
    const char* msg;
public:
    Something()
    {
        msg = "Hewwo World";
    }
    void Print()
    {
        for (int i = 0; i < 11; ++i)
        {
            std::cout << *msg++;
        }
    }
};

int main()
{
    Something smth;
    smth.Print();
}

entrambi danno lo stesso output e il primo metodo è molto più pulito (secondo me). C'è qualche motivo per cui dovrei usare il secondo metodo?

in questo codice particolare, non stai fornendo alcun parametro alla classe e non è necessario inizializzare la variabile msg in un costruttore. quindi, il costruttore non è necessario.

usa il costruttore quando vuoi che una variabile venga inizializzata nel momento in cui l'oggetto viene creato o quando devi dare alcuni parametri alla classe, poi puoi usare il costruttore.

Per essere precisi, non stai inizializzando lì. Stai definendo un inizializzatore di membri predefinito. Questo inizializzatore verrà utilizzato quando inizializzi un'istanza senza fornire un inizializzatore per quel membro.

Dipende dal caso, ma molto spesso non è necessario farlo. Le classi semplici sono spesso utili come aggregati. La condizione preliminare affinché una classe sia un aggregato è che la classe non abbia costruttori dichiarati dall'utente.