C++ 这个和这个区别

C++ 这个和这个区别,c++,reference,static,this,C++,Reference,Static,This,下面的程序输出是正确的,但是当我使用这个时出现了一个错误 谁能告诉我这和这意味着什么 #include<iostream> using namespace std; class Test { private: static int count; public: Test& fun(); // fun() is non-static now }; int Test::count = 0; Test& Test::fun() { Test

下面的程序输出是正确的,但是当我使用这个时出现了一个错误 谁能告诉我这和这意味着什么

#include<iostream>
using namespace std;

class Test 
{
private:
    static int count;
public:
    Test& fun(); // fun() is non-static now
};

int Test::count = 0;

Test& Test::fun() 
{
    Test::count++;
    cout<<Test::count<<" ";
    return *this;
}

int main()  
{
    Test t;
    t.fun().fun().fun().fun();
    return 0;
}
当我用它代替*时,会出现以下错误:

#include<iostream>
using namespace std;

class Test 
{
private:
    static int count;
public:
    Test& fun(); // fun() is non-static now
};

int Test::count = 0;

Test& Test::fun() 
{
    Test::count++;
    cout<<Test::count<<" ";
    return *this;
}

int main()  
{
    Test t;
    t.fun().fun().fun().fun();
    return 0;
}
In member function 'Test& Test::fun()':
invalid initialization of non-const reference of type 'Test&' from an rvalue of type 'Test*'
     return this;
有谁能举个好例子告诉我这个和这个有什么区别吗

#include<iostream>
using namespace std;

class Test 
{
private:
    static int count;
public:
    Test& fun(); // fun() is non-static now
};

int Test::count = 0;

Test& Test::fun() 
{
    Test::count++;
    cout<<Test::count<<" ";
    return *this;
}

int main()  
{
    Test t;
    t.fun().fun().fun().fun();
    return 0;
}
有人能告诉我这是什么意思吗

#include<iostream>
using namespace std;

class Test 
{
private:
    static int count;
public:
    Test& fun(); // fun() is non-static now
};

int Test::count = 0;

Test& Test::fun() 
{
    Test::count++;
    cout<<Test::count<<" ";
    return *this;
}

int main()  
{
    Test t;
    t.fun().fun().fun().fun();
    return 0;
}
是指向当前对象的指针

#include<iostream>
using namespace std;

class Test 
{
private:
    static int count;
public:
    Test& fun(); // fun() is non-static now
};

int Test::count = 0;

Test& Test::fun() 
{
    Test::count++;
    cout<<Test::count<<" ";
    return *this;
}

int main()  
{
    Test t;
    t.fun().fun().fun().fun();
    return 0;
}
*此
是当前对象

#include<iostream>
using namespace std;

class Test 
{
private:
    static int count;
public:
    Test& fun(); // fun() is non-static now
};

int Test::count = 0;

Test& Test::fun() 
{
    Test::count++;
    cout<<Test::count<<" ";
    return *this;
}

int main()  
{
    Test t;
    t.fun().fun().fun().fun();
    return 0;
}
您大概知道解引用操作符的作用是什么?我不知道你为什么要任意地把
这个
换成
*这个
。不要这样做。

和的可能重复
#include<iostream>
using namespace std;

class Test 
{
private:
    static int count;
public:
    Test& fun(); // fun() is non-static now
};

int Test::count = 0;

Test& Test::fun() 
{
    Test::count++;
    cout<<Test::count<<" ";
    return *this;
}

int main()  
{
    Test t;
    t.fun().fun().fun().fun();
    return 0;
}