022:看上去像多态

 1 #include <iostream>
 2 using namespace std;
 3 class B { 
 4     private: 
 5         int nBVal; 
 6     public: 
 7         void Print() 
 8         { cout << "nBVal="<< nBVal << endl; } 
 9         void Fun() 
10         {cout << "B::Fun" << endl; } 
11         B ( int n ) { nBVal = n;} 
12 };
13 class D:public B{
14     private:
15         int nDVal;
16     public:
17         void Print() { 
18            B::Print();
19            cout << "nDVal="<< nDVal << endl; 
20         } 
21         void Fun() 
22         {cout << "D::Fun" << endl; } 
23         D ( int n ):B(n * 3) { nDVal = n;} //一个派生类对象可以看作是一个基类对象,是对其扩充,所以记得 !!派生类对象要对基类对象成员进行初始化!!!(D ( int n ):B(n * 3)) 
24 };
25 int main() { 
26     B * pb; D * pd; 
27     D d(4); d.Fun(); 
28     pb = new B(2); pd = new D(8); 
29     pb -> Fun(); pd->Fun(); 
30     pb->Print (); pd->Print (); 
31     pb = & d; pb->Fun(); 
32     pb->Print(); 
33     return 0;
34 }

 

posted @ 2022-09-13 22:49  balabalahhh  阅读(32)  评论(0编辑  收藏  举报