原理工程师 https://stackoverflow.com/users/201787/metal在我上一家公司有一条规则private
static
方法应该作为实现文件中的函数实现,而不是作为类方法。
我不记得他的规则是否有任何例外。我在目前的工作中偶然发现了这样做的动机:如果相关函数的参数或返回类型是需要在标头中包含定义文件的对象,则这可能会导致不必要的困难。
这足以让我不再使用private
static
再次方法,但在我注销它们之前,我想知道是否有人知道他们填补了实现文件函数不会填补的利基市场?
EDIT:
这里举一个例子可能会有帮助。说这是宣言的开始class Foo
,它还有其他方法会调用void foo()
在实现文件中:
class Foo {
static void foo();
So foo
只能通过其他方法访问Foo
。为什么我不直接定义foo
在实现文件中,并将其全部保留在标头之外?
与独立式不同static
实现文件中的函数,私有静态成员函数可以在类的头中使用。当您想要内联非私有成员函数(该函数调用您的私有静态函数)时,这一点很重要:
class Demo {
private:
static std::string sanitize(const std::string& name);
std::string name;
public:
Demo(const std::string& n) : name(sanitize(n)) {
}
};
对独立静态函数执行相同操作需要实现Demo
cpp 文件中的构造函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)