C++ 在C++;,为什么使用静态类函数而不是常规函数?
如果函数只执行未绑定到类的任何实例的任务,为什么不使用常规函数呢?您可以使用非成员函数,这是很常见的。使用非成员函数和C++ 在C++;,为什么使用静态类函数而不是常规函数?,c++,oop,C++,Oop,如果函数只执行未绑定到类的任何实例的任务,为什么不使用常规函数呢?您可以使用非成员函数,这是很常见的。使用非成员函数和静态成员函数的主要区别在于,非成员函数只能访问类的公共成员(除非它被标记为朋友),而静态成员函数与所有成员函数一样,可以访问所有成员 class demo { public: int t; static int u; private: int v; static int w; public: static void f(const demo
静态
成员函数的主要区别在于,非成员函数只能访问类的公共成员(除非它被标记为朋友
),而静态
成员函数与所有成员函数一样,可以访问所有成员
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
}
类演示{
公众:
int t;
静态INTU;
私人:
INTV;
静态int-w;
公众:
静态空位f(常数演示&);
};
void demo::f(const demo&d){
std::cout访问修饰符不适用于常规函数。常规函数无法访问静态类成员。添加到以前的注释中,还可以隐式为函数引入命名空间。此外,如果传递给静态回调函数“this”指针,则可以通过该点访问该类的私有成员呃(假设回调是该类的静态成员)@S.M.--正则函数可以访问任何公共类成员,包括公共静态成员。