#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