开发者社区 问答 正文

静态函数 static bool 类型 问题

函数定义为static bool foo(const std::string& iVariable); 属于类A
当我在使用时 if (A::foo(Var)) 时,我发现多次调用该if语句,且使用了不同的Var时,foo返回值一直是false,是不是说静态函数的值在第一次调用时就确定了,无法改变?困惑,谢谢!!

展开
收起
a123456678 2016-03-09 18:41:21 5843 分享 版权
1 条回答
写回答
取消 提交回答
  • 静态成员函数不和任何对象相关联,所以

    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:静态数据成员必须在类的外部定义

    2019-07-17 18:56:34
    赞同 展开评论
问答地址: