当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C++继承细节 -1

C++继承细节 -1

2018年05月29日  | 移动技术网IT编程  | 我要评论

李玟年龄,星河创服coo李元戎,付贞怡

  • 为什么基类析构函数最好要使用 virtual 进行修饰?

    class A {
    private:
    ......
    public:
    ~A();
    A() {}
    };
    class B : public A {
    private:
    ......
    public:
    ~B();
    B() {}
    };
    A *aPtr = new B;

    执行delete aPtr后,如果A类中的析构函数为虚函数;则先调用B类中的析构函数在调用A类中的析构函数;否则只调用A类中的析构函数。

  • 派生类重新定义基类中的虚方法 规则
    1. 确保与原来的类型完全相同(参数、参数类型、参数顺序、方法名), 如果方法返回类型为基类指针或引用则将其改为指向派生类指针或引用。

      class A {
      ......
      public:
      A() {}
      ~A() {}
      virtual A *getInstance();
      };
      class B public A {
      ......
      public:
      B() {}
      ~B() {}
      virtual B *getInstance();
      };
    2. 如果基类中的虚方法被重载,则在派生类中应重新定义全部重载版本,否则将隐藏其他版本。

      class A {
      ......
      public:
      A() {}
      ~A() {}
      virtual A *getInstance();
      virtual A *getInstance(int a);
      virtual A *getInstance(double d);
      };
      class B public A {
      ......
      public:
      B() {}
      ~B() {}
      virtual B *getInstance();
      virtual B *getInstance(int a);
      virtual B *getInstance(double d);
      };

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网