成员函数重载解析

    技术2022-05-11  89

    1。类成员函数的重载解析之前先进行名字解析2。普通继承层次不存在优先级3。虚拟继承存在的个优先级,首先需的后续的概念 <1> class A{public:    void ok(int){cout << "A::okokok" << endl;}};class B:public A{public:    void ok(){cout << "B::okokok" << endl;}};class C:public B{};int main(){    C c;    c.ok(); //B::ok    return 0;} <2> class A{public:    void ok(int){cout << "A::okokok" << endl;}};class B:public A{public:    using A::ok;    void ok(){cout << "B::okokok" << endl;}};class C:public B{};int main(){    C c;    c.ok();    c.ok(3);    return 0;} <3> C是A的后续类,改写之,具优先级所以不二义 class A{public:    void ok(){cout << "A::okokok" << endl;}};class B:virtual public A{};class C:virtual public A{public://    using A::ok;    void ok(int){cout << "C::okokok" << endl;}};class D:public B, public C{};int main(){    D d;    d.ok();    d.ok(3);    return 0;} <4> C并非A的后续类,不存改写说法,二义 class A{public:    void ok(){cout << "A::okokok" << endl;}};class B:virtual public A{};class C:public A{public:    void ok(int){cout << "C::okokok" << endl;}};class D:public B, public C{};int main(){    D d;    d.ok(); //err    d.ok(3); //err    return 0;}

    最新回复(0)