给定一个指向C ++对象的指针,调用静态成员函数的首选方法是什么?

说我有:

class A {
public:
    static void DoStuff();

    // ... more methods here ...
};

后来我有一个想要调用DoStuff的函数:

B::SomeFunction(A* a_ptr) {

是否更好地说:

    a_ptr->DoStuff();
}

或者,即使我有一个实例指针,以下更好:

    A::DoStuff()
}

这纯粹是一种风格问题,但我想在作出决定之前得到一些明智的意见。


我想我更喜欢“A :: DoStuff()”,因为更清楚的是正在调用静态方法。


最好是通过名称而不是通过对象来调用静态方法,因为它实际上并不实际使用该对象。 在Java中,存在同样的问题。 Java中一个不太少见的问题如下:

Thread t = getSomeOtherThread();
t.sleep(1000);

这个编译好,但几乎总是一个错误 - Thread.sleep()是一个静态方法,它导致当前线程进入休眠状态,而不是代码似乎暗示的线程被执行。


我个人更喜欢A :: DoStuff()约定,因为任何读取代码的人都会立即清楚它是对静态成员函数的调用。

链接地址: http://www.djcxy.com/p/2847.html

上一篇: Given a pointer to a C++ object, what is the preferred way to call a static member function?

下一篇: Why is a static method considered a method?