Разница Визуальный и GDBonline ответ? - PullRequest
0 голосов
/ 28 января 2020

У меня есть проблема, когда я запускаю программу в Visual Studio, что я получил это как ответ:

Token()

Operator+

Token(Token&&)

~Token(): 4

Operator=

~Token(): 4

Но когда я скомпилировал, тот же исходный код в GDBonline я получил это как ответ:

Token()

Operator+

Operator=

~Token(): 4

Я хочу спросить вас, какой ответ является хорошим?

#include <iostream>
using namespace std;

 class Token{

    public:
        int a{1};
        Token(){ //default constructor
            cout << "Token()" << endl;
        };
        Token(int a0): a{a0} { //parametric constructor
            cout << "Token(int)" << endl;
        }
        Token(const Token& t){ //copy constructor
            this->a = t.a;
            cout << "Token(const Token&)" << endl;
        }
        Token(Token&& t) noexcept{ //move constructor
            this->a = t.a;
            cout << "Token(Token&&)" << endl;
        }
        Token& operator=(const Token& t0){ //operator =
            this->a = t0.a;
            cout << "Operator=" << endl;
            return *this;
        }
        Token operator+(const Token& t0){ //operator +
            Token t;
            t.a = this->a + t0.a;
            cout << "Operator+" << endl;
            return t;
            //return Token{this->a + t0.a};
        }
        ~Token(){ //destructor
            cout << "~Token(): " << this->a << endl;
        };
};

int main(){

    Token t0;

    Token t1{3};

    Token t2;

    t0 = t1 + t2;


    return 0;
}
...