测试程序如下:
#include <iostream>
using namespace std;
class A
...{
public:
A()
...{
cout << "1--new(A)" << endl;
}
virtual void foo()
...{
cout << "2--A::foo()" << endl;
}
virtual ~A()
...{
cout << "3--delete(A)" << endl;
}
};
class B: public A
...{
public:
B()
...{
cout << "4--new(B)" << endl;
}
virtual void foo()
...{
cout << "5--B::foo()" << endl;
}
~B()
...{
cout << "6--delete(B)" << endl;
}
};
class C: public A
...{
private:
B b;
public:
C()
...{
cout << "7--new(C)" << endl;
}
void foo()
...{
cout << "8--C::foo()" << endl;
b.foo();
}
~C()
...{
cout << "9--delete(C)" << endl;
}
};

/**//**
* 测试程序
*/
int main()
...{
A *a = new C;
cout << " **** " << endl;
a->foo();
cout << " **** " << endl;
delete(a);
return 0;
}
测试结果如下:
1--new(A)
1--new(A)
4--new(B)
7--new(C)
****
8--C::foo()
5--B::foo()
****
9--delete(C)
6--delete(B)
3--delete(A)
3--delete(A)

本文通过一个 C++ 示例展示了类继承与多态的使用方式。该示例包括基类 A 和派生类 B、C,并在 main 函数中创建了 C 类的对象指针指向基类 A 的指针,演示了运行时多态性和析构过程。
1万+

被折叠的 条评论
为什么被折叠?



