当前位置:  开发笔记 > 编程语言 > 正文

在C++中,如果成员函数是虚拟的,何时可以使用静态绑定?

如何解决《在C++中,如果成员函数是虚拟的,何时可以使用静态绑定?》经验,为你挑选了2个好方法。

在C++中什么时候虚函数可以使用静态绑定?如果通过指针访问它,直接访问,或从不?



1> 小智..:

通过指针或引用调用虚方法时,将使用动态绑定.在任何其他时间,使用编译时绑定.例如:

class C;

void Foo(C* a, C& b, C c) {
  a->foo();  // dynamic
  b.foo();  // dynamic
  c.foo();  // static (compile-time)
}



2> Adam Rosenfi..:

如果要调用函数的基类版本,可以通过显式命名基类来实现:

class Base
{
public:
  virtual ~Base() {}
  virtual void DoIt() { printf("In Base::DoIt()\n"); }
};

class Derived : public Base
{
public:
  virtual void DoIt() { printf("In Derived::DoIt()\n"); }
};

Base *basePtr = new Derived;
basePtr->DoIt();  // Calls Derived::DoIt() through virtual function call
basePtr->Base::DoIt();  // Explicitly calls Base::DoIt() using normal function call
delete basePtr;

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有