我冒着明显的危险:调用该函数,如果它在基类中定义,则该函数在派生类中自动可用(除非它是private)。
如果派生类中有一个具有相同签名的函数,则可以通过在基类名称后加上两个冒号来消除歧义
base_class::foo(...)。你应该注意到,不像Java和C#,C 并没有对“基础类”(关键字super或base),因为C 支持多重继承,这可能导致歧义。
class left {public: void foo();};class right {public: void foo();};class bottom : public left, public right {public: void foo() { //base::foo();// ambiguous left::foo(); right::foo(); // and when foo() is not called for 'this': bottom b; b.left::foo(); // calls b.foo() from 'left' b.right::foo(); // call b.foo() from 'right' }};
顺便说一句,您不能两次直接从同一个类派生,因为将无法在另一类上引用一个基类。
class bottom : public left, public left { // Illegal};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)