给定一个指向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?