In c++ I can declare a field as a regular variable of some type, instantiate it in the constructor, and use it later:

    private: 	Foo field;
    ...

    A::A() {
        field = FieldImpl();
    }
    ....
    method(field);

Or alternatively I can use a pointer:

    private: 	Foo* field;
    ...

    A::A() {
        field = new FieldImpl();
    }

    A::~A() {
        delete field;
    }

    ...
    method(*field);

When declaring a field, how do I decide if I should use a pointer or a regular variable?