文件名称:绝不重新定义继承而来的非虚函数-*重构*改善既有代码的设计(带完整书签)
文件大小:1.28MB
文件格式:PDF
更新时间:2024-06-27 17:56:08
C++ 编程规范
规则4.15 绝不重新定义继承而来的非虚函数 说明:因为非虚函数无法实现动态绑定,只有虚函数才能实现动态绑定:只要操作基类的指针,即可 获得正确的结果。 示例:pB->mf()和pD->mf()两者行为不同。 class B { public: void mf(); //... }; class D:public B { public: void mf(); //... }; D x; //x is an object of type D B *pB = &x; //get pointer to x D *pD = &x; //get pointer to x pB->mf(); //calls B::mf pD->mf(); //calls D::mf 建议4.5 避免派生类中定义与基类同名但参数类型不同的函数 说明:参数类型不同的函数实际是不同的函数。 示例:如下三个类,类之间继承关系如下:类Derive2继承类Derive1,类Derive1继承类Base。 三个类之中均实现了FOO函数,定义如下: Base类:virtual long FOO(const A , const B , const C)=0; Derive1类:long FOO(const A , const B , const C); Derive2类:long FOO(const A , B , const C); 代码中存在如下的调用: Base* baseptr = new Derive2(); baseptr -> FOO(A,B,C);