初学者求指教
#include <iostream>
using namespace std;
class A
{public:
A(){cout<<"A::A() called.\n";}
virtual ~A(){cout<<"A::~A() called.\n";}
};
class B:public A
{ public:
B(int i)
{ cout<<"B::B() called.\n";
buf=new char[i];
}
virtual ~B()
{ delete []buf;
cout<<"B::~B() called.\n";
}
private:
char *buf;
};
void fun(A *a)
{ cout<<"May you succeed!"
delete a;
}
int main()
{ A *a=new B(15);??这个是什么意思呢?
fun(a);
return 0;
}
[解决办法]
用基类指针指向派生类对象,这是可以的,也是经常出现的。
[解决办法]
创建一个B的实例,然后用一个A类型的指针指向这个实例,由于B是A的子类,所以这样完全合理,但是要记住这个指针指向的实际是一个B类的实例。