函数定义为static bool foo(const std::string& iVariable); 属于类A
当我在使用时 if (A::foo(Var)) 时,我发现多次调用该if语句,且使用了不同的Var时,foo返回值一直是false,是不是说静态函数的值在第一次调用时就确定了,无法改变?困惑,谢谢!!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
静态成员函数不和任何对象相关联,所以
1、无法访问属于类对象的非静态数据成员
class A
{
private:
int a;//non-static
public:
A(int init):a(init){}
static getvalue(){return a;}/*错误,无法访问属于类对象的非静态数据成员*/
};
2、无法访问非静态成员函数
class A
{
private:
int a;//non-static
public:
A(int init):a(init){}
int getvalue(){return a;}//non-static
static printvalue(){cout << getvalue() << endl;}/*错误,无法访问非静态成员函数*/
};
3、只能调用其余的静态成员函数
class A
{
private:
static int staticvalue;
int a;//non-static
public:
A(int init):a(init){}
static int getvalue(){return staticvalue;}
static printvalue(){cout << getvalue() << endl;}
};
int A::staticvalue = 2;//类外的定义
int main(int argc , char *argv[])
{
A demo(1);
demo.printvalue();
A::printvalue();
return 0;
}
BTW:静态数据成员必须在类的外部定义