If you use an operator newto allocate a class, then it is placed in a heap. It doesn't matter if member variables are accessible by pointers or not.
class A {
int a;
float* p;
};
A* pa = new A();
A a;
, , , . :
A a;
A* pa = &a;
, , :
class B {
public:
std::vector<int> data;
B() : data(100000) {}
};
B b;