#include <iostream>
using namesapce std;
class A
{
public:
virtual ~A(){cout<<"delete A"<<endl};
};
class B: public A
{
public:
B(int n):n(n){}
void show(){cout<<n<<e
在以下示例中,b是一个多态指针类型,其静态类型是Base*并且其动态类型是Derived*。 struct Base
{
virtual void f();
};
struct Derived : Base
{
};
int main()
{
Base *b = new Derived();
// ...
delete b;
}
b
只是出于好奇,我试图做下面的例子,看看编译器是否给我一个警告,所以不要调用一个以堆栈溢出结束的无限循环。我想也许有一种不同于只调用普通函数或方法的行为。但事实并非如此。有没有特别的解释呢,还是只是作为正常的函数调用来处理,因为我通过使用this运算符显式调用基类析构函数? 例子: class A {
virtual ~A();
};
class B : A {
virtu