我最近在风格上做了一个改变,想看看其他c ++程序员对它的看法以及是否有任何缺点.
本质上,当我需要一个不需要访问给定类成员的实用函数时,我以前做的是这样的:
file.h
class A {
public:
// public interface
private:
static int some_function(int);
};
Run Code Online (Sandbox Code Playgroud)
file.cpp
int A::some_function(int) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
但最近,我更喜欢做更像这样的事情:
file.cpp
namespace {
int some_function(int) {
}
}
// the rest of file.cpp
Run Code Online (Sandbox Code Playgroud)
这是我的思考过程:
最后一个对我来说是最引人注目的.所以我的问题是:这有什么缺点吗?
对于我能想到的大多数目的而言,它们在功能上是等效的.在我看来,private static函数几乎总是可以在匿名中转换为自由函数namespace.
编辑:我想到的一件事是,如果给定一个指向要操作的对象的指针,private static函数就可以访问private成员,但如果是这样的话,为什么不让它成为非static成员呢?
你们有什么感想?
拥有一个自由函数(在匿名命名空间中只能在单个源文件中访问)并将所有变量作为参数发送,而不是让私有类成员函数没有任何参数并直接访问成员变量,这有什么好处?谢谢!
标题:
Class A {
int myVariable;
void DoSomething() {
myVariable = 1;
}
};
Run Code Online (Sandbox Code Playgroud)
资源:
namespace {
void DoSomething2(int &a) {
a = 1;
}
}
int A::SomeFunction() {
DoSomething2(myVariable); // calling free function
DoSomething(); // calling member fucntion
}
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢将它们作为成员,那么如果我有一个案例,我首先调用一个不访问任何成员变量的函数,但该函数调用另一个访问成员的函数.它们既可以是会员功能还是免费的?
c++ dependencies pimpl-idiom member-functions non-member-functions