搜尋

首頁  >  問答  >  主體

c++ - 静态函数 static bool 类型 问题

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

PHPzPHPz2803 天前1261

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 11:05:26

    建議你還是把代碼貼出來。我總結了一下關於靜態數據成員和靜態成員函數的一些知識點,希望對你有用!

    靜態成員函數不和任何對象相關聯,所以

    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:靜態數據成員必須在類的外部定義

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 11:05:26

    樓上說的有問題,靜態函數是最好隻引用靜態數據成員,但也可以引用非靜態的數據成員。如果引用對象中的非靜態數據成員可以聲明函數static bool foo(A & a)。lz這裏const std::string& iVariable並不是類A中的數據成員,為什麼要用靜態函數來處理呢?

    回覆
    0
  • 取消回覆