// B2_10.cpp #include using namespace std; class B { int x; // data members needed to show the // indexing error, e.g., class objects // need to be different sizes public: virtual ~B() {} virtual void mf() { cout << "\n B::mf()"; } }; class D : public B { int y; virtual void mf() { cout << "\n D::mf()"; } }; D* fun() { D *pD = new D[2]; return pD; } // B2 #10 corrected in class // to include return statement void main() { B *pB = fun(); pB[0].mf(); // pB[1].mf(); memory access violation because B objects // are not the same size as D objects cout << "\n\n"; }