У меня есть проблема, когда я запускаю программу в 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;
}