看起来像是多态?其实是继承
    image.png

    1. #include <iostream>
    2. using namespace std;
    3. class B
    4. {
    5. private:
    6. int nBVal;
    7. public:
    8. void Print()
    9. {
    10. cout << "nBVal=" << nBVal << endl;
    11. }
    12. void Fun()
    13. {
    14. cout << "B::Fun" << endl;
    15. }
    16. B(int n) { nBVal = n; }
    17. };
    18. class D : public B
    19. {
    20. private:
    21. int nDVal;
    22. public:
    23. void Print()
    24. {
    25. B::Print();
    26. cout << "nDVal=" << nDVal << endl;
    27. }
    28. void Fun()
    29. {
    30. cout << "D::Fun" << endl;
    31. }
    32. D(int n) : B(3 * n) { nDVal = n; }
    33. };
    34. int main()
    35. {
    36. B *pb;
    37. D *pd;
    38. D d(4);
    39. d.Fun();
    40. pb = new B(2);
    41. pd = new D(8);
    42. pb->Fun();
    43. pd->Fun();
    44. pb->Print();
    45. pd->Print();
    46. pb = &d;
    47. pb->Fun();
    48. pb->Print();
    49. return 0;
    50. }
    • 一开始我也是想用多态虚函数来做的,但是派生类 D 中要么定义一个普通的 Print() 要么就定义成虚函数,二者不可得兼,不符合重载的条件(参数表不同)
    • 这个题主要是考察在派生类中如何初始化父类如何访问父类的成员