如果函数只是执行不绑定(bind)到类的任何实例的工作,为什么我们不只使用常规函数呢?
最佳答案
您可以使用非成员函数,这很常见。使用非成员函数和static
成员函数之间的主要区别在于,非成员函数只能访问类的公共(public)成员(除非它被标记为friend
) code>),并且一个 static
成员函数,像所有成员函数一样,可以访问所有成员。
class demo {
public:
int t;
static int u;
private:
int v;
static int w;
public:
static void f(const demo&);
};
void demo::f(const demo& d) {
std::cout << d.t << '\n'; // okay: accessing public member
std::cout << d.w << '\n'; // okay: member function accessing private member
std::cout << demo::u << '\n'; // okay: accessing public member
std::cout << demo::w << '\n'; // okay: member function accessing private member
}
void g(const demo& d) {
std::cout << d.t << '\n'; // okay: accessing public member
std::cout << d.w << '\n'; // error: non-member function accessing private member
std::cout << demo::u << '\n'; // okay: accessing public member
std::cout << demo::w << '\n'; // error: non-member function accessing private member
}
关于c++ - 在C++中,为什么使用静态类函数而不是常规函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238635/