任何人都可以看下面的代码吗?我试图为从A派生的类B分配一些内存,但是我不能调用它的成员函数(违反内存访问)。
但是,如果我使用B * b = new B(),一切都会好起来的。这里有什么问题?
class A
{
public:
virtual void print() const = 0;
};
class B : public A
{
public:
void print() const
{
printf("print from B\n");
}
};
void main()
{
B* b = (B*)malloc(sizeof(B));
//B* b = new B();
b->print();
A* a = b;
a->print();
free(b);
}