local variables of static member functions

后端 未结 4 1266
终归单人心
终归单人心 2021-02-19 06:25

Today we came accross a problem concerning static member functions in an multithreaded environment. The question we asked ourselves and couldn\'t find a satisfying answer is: ar

4条回答
  •  忘了有多久
    2021-02-19 07:02

    No, a, b, and c are not static.

    Here's a sample that illustrates this:

    class Val
    {
    public:
        Val() { cout << "Val" << this << endl; }
        ~Val() { cout << "~Val" << this << endl; }
        int n_;
    };
    
    class A
    {
    public:
        static int test()
        {
            Val a;
            a.n_ = rand();
            Val b;
            b.n_ = rand();
            Val c;
            c.n_ = a.n_ + b.n_;
            return c.n_;
        }
    };
    
    int main()
    {
        srand(time(0));
        for( int i = 0; i < 5; ++i )
        {
            cout << "Test = " << A::test() << endl;
        }
    
        return 0;
    
    }
    

提交回复
热议问题