"this->" 是否总是可以由 C++ 中的显式范围解析替换?

Is "this->" always replaceable by explicit scope resolution in C++?

很多程序员喜欢用this->(我的感觉是,即使没有必要)。它的优势在 class 模板中很明显,模板 class 依赖于模板参数,如果模板有虚函数,它可能是唯一的解决方案。

所以我的问题如下:不考虑依赖模板是 this-> 总是可以跳过或替换为显式范围解析吗?

隐藏名字,当virtual发挥作用时,你必须使用this

struct Base
{
    virtual ~Base() = default;
    virtual void func() { std::cout << "Base\n"; }
    void foo(std::function<void()> func)
    {
        func();       // call the std::function
        this->func(); // virtual/dynamic call
        Base::func(); // static call
    }
};

struct Derived : Base
{
    virtual void func() { std::cout << "Derived\n"; }
};



int main()
{
    Derived d;

    d.foo([](){std::cout << "lambda\n";});
}

Demo