gpt4 book ai didi

c++ - 为什么在某些情况下可以调用没有对象的成员函数?

转载 作者:行者123 更新时间:2023-12-01 13:21:32 25 4
gpt4 key购买 nike

我正在使用一个数值库 deal.ii,其中集成了许多数值工具。我发现奇怪的是我可以直接调用成员函数而无需定义对象。比如我可以直接调用

Vectortools::interpolate_boundary_condition();
请问什么时候可以不定义对象直接调用成员函数?谢谢!

最佳答案

有两种情况你可以这样做:

  • 成员函数声明为 static -- 在那种情况下,它基本上是一个自由函数,但范围仅限于类。值得注意的是,this不能在静态函数中使用,因为不需要对象来调用它。
  • 当您在 this 的成员函数中时指针可隐式转换为指向被调用类型的指针(在本例中为 Vectortools)。请注意,这是在对象上调用的(隐式 *this )。这可用于调用被覆盖或隐藏的继承成员:
    class A {
    public:
    virtual void foo();
    };

    class B : public A {
    public:
    virtual void foo() override;
    };

    void B::foo() {
    // Do something

    // Invoke the method we've overidden from A.
    A::foo();

    // Then do something else
    }
  • 关于c++ - 为什么在某些情况下可以调用没有对象的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63320236/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com