i_a*_*orf 4 c++ static coding-style
说我有:
class A {
public:
static void DoStuff();
// ... more methods here ...
};
Run Code Online (Sandbox Code Playgroud)
后来我有一个想要调用DoStuff的函数:
B::SomeFunction(A* a_ptr) {
Run Code Online (Sandbox Code Playgroud)
是否更好地说:
a_ptr->DoStuff();
}
Run Code Online (Sandbox Code Playgroud)
或者更好,即使我有一个实例指针:
A::DoStuff()
}
Run Code Online (Sandbox Code Playgroud)
这纯粹是一种风格问题,但在做出决定之前,我想得到一些明智的意见.
Ada*_*eld 19
最好通过名称而不是通过对象来调用静态方法,因为它实际上根本不使用该对象.在Java中,存在同样的问题.Java中一个不太常见的问题如下:
Thread t = getSomeOtherThread();
t.sleep(1000);
Run Code Online (Sandbox Code Playgroud)
这编译很好,但几乎总是一个错误 - Thread.sleep()是一个静态方法,导致当前线程休眠,而不是代码似乎意味着正在执行的线程.