想象一下,我有两个A类和B类定义如下:
class A {
public:
virtual void pureVirtual() = 0;
}
class B : public A {
public:
virtual void pureVirtual();
}
Run Code Online (Sandbox Code Playgroud)
我当然有其他方法,但这仅仅是为了这个例子.现在,在我的cpp代码中,我有这种var:
B *myB = new B;
A *myA = myB;
Run Code Online (Sandbox Code Playgroud)
是否可以通过调用myA上的 delete 来删除myB对象:?我是否必须做一些特别的事情才能做到这一点?OOP的想法和编程风格是否合适,还是一个非常糟糕的主意?delete myA;
谢谢!
这是可能的,但A需要一个虚拟析构函数才能正常工作:
class A {
public:
virtual void pureVirtual() = 0;
virtual ~A() {}
}
Run Code Online (Sandbox Code Playgroud)
从面向OO的角度来看,这没有任何问题.