C++,私有static函数怎么调用

2024年12月03日 08:18
有5个网友回答
网友(1):

原因出在你的static函数是private(私有的)

所以类外部不能调用的。

只有在类的内部,或都由这个类生成的对象的内部才能使用

你把他的权限改成public,他就能在类外部使用了,

你那两种调用才会成功。

网友(2):

  私有静态成员函数只允许在本类的成员函数内部或者友元内部调用。

  在C++类里,有这样的规则:

  1、私有(private)成员是只希望在类的成员函数内部访问,不希望被类外面的任何地方访问的;公有(public)成员则是允许在类外面被访问;保护(protected)成员则是允许在本类和子类的成员函数内部访问。

  2、无论哪一种,都允许在友元里访问,但这破坏了封装的初衷,因此尽量不要使用友元。

  3、非静态成员提供的函数和变量是对象的组成成分,可以看成是每个对象各自独立有一份;静态(static)成员则是本类提供的共用函数和共用变量,不属于任何一个对象,可以看成是大家共用同一份。

  一般来说,静态成员函数是用来提供一些通用工具功能的,比如数学运算,文件系统基本操作,因此经常是公有的。但是如果希望这是个秘密工具,可以定义成私有,只允许在本类的成员函数内部或者友元内部调用。

  也就是说,私有静态成员函数只允许在本类的成员函数内部或者友元内部调用,但基本上不使用友元,只在本类的成员函数内部调用。

  举个例子,一个用户类,密码是需要加密存储的,这个加密算法是所有用户统一的,但对外不公开,就可以写成私有静态成员函数。

class User{
    string _name;
    string _pass;
public:
    User(const string& name, const string& pass){
        _name = name;
        _pass = encode(pass);//调用私有静态成员函数
    }
    bool validate(const string& pass){
        return _pass==encode(pass);//调用私有静态成员函数
    }
    //...其他成员函数
private:
    static string encode(const string& pass){//私有静态成员函数
        //...此处写加密算法,返回加密后的字符串
    }
};

网友(3):

#include
using namespace std;
class mammal
{
public:
mammal(){n++;}
~mammal(){n--;}
static int getn()
{
return n;
}
private:
static int n;
};
int mammal::n =0;
void main()
{
mammal m[789];
cout<cout<}

------------------
私有函数和私有成员一样类外不能调用
就比如你不能使用
cout<

网友(4):

private私有成员只能通过类自身的函数调用,用友元也可以,但使用对象和类名是不可以调用的

网友(5):

私有的没法调用,除非你生命一个函数是他的友元