以下四种调用另一个成员函数的方式有什么区别?
是否存在导致某种方法更可取的优点?
void Object::trigger() {
(*this).triggerinner(10);
this->triggerinner(10);
triggerinner(10);
Object::triggerinner(10);
}
void Object::triggerinner(int x) {
std::cout << "trigger" << std::endl;
}
最佳答案
前三个在非模板代码中基本相同。 在模板成员函数中,前两个构成名称 查找依赖项(因此编译器可以在依赖项中查找名称) 基类)。一般来说,越简单越好,所以大多数人都喜欢 第三种形式,除非需要依赖查找, 在这种情况下,他们将使用第二个。
第四种形式阻止虚拟分辨率。 (而且它已经在
其实和上面的三种形式一样,即
this->Object::triggerinner(10)
等)当您
想要强制解决:调用的函数将位于
Object
或在 Object
的基类中,但绝不会在派生类中
类,即使该函数是虚函数。这是最常用的
在派生类中,先调用基类实现
(或之后)做额外的工作:
void
Derived::func()
{
Base::func();
// Additional work here...
}
除了成员函数之外,还可以用来调用 当您没有对象时,使用静态成员函数。
关于c++ - 以下4种调用其他成员方法的方式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19536002/