0
我允許執行以下操作嗎? 用派生類對象數組初始化基類指針? gnu g ++它達到刪除語句時崩潰...使用派生類對象數組初始化基類指針
任何建議嗎?我是否必須重載新的[]和刪除操作符?
謝謝!
#include <iostream>
using std::endl;
using std::cout;
using std::cin;
// base class --> Base
class Base {
public:
// constructor
Base() {
cout << " --> constructor --> Base" << endl;
}
// destructor
virtual ~Base() {
cout << " --> destructor --> ~Base" << endl;
}
};
// derived class --> D1
class D1 : virtual public Base {
public:
// constructor
D1() : Base(), x1(10) {
cout << " --> constructor --> D1" << endl;
}
// destructor
virtual ~D1() {
cout << " --> destructor --> ~D1" << endl;
}
private:
int x1;
};
// the main program
int main()
{
const int DIM = 100;
Base * pb2 = new D1 [DIM];
delete [] pb2;
return 0;
}
請注意,這已經在這裏得到解答:http://stackoverflow.com/questions/7196172/can-a-pointer-to-base-point-to-an-array-of-derived-objects?rq=1 – sfjac
謝謝!我會嘗試! – paulsepolia