I've encountered a change in behaviour (at least to my understanding) between primitives and Classes i've created in c++. say, the following:
int foo()
{
int a = 4;
return a;
}
int main()
{
foo() = 2;
}
of course creates causes a compilation error, because i'm trying to assign somthing into an rvalue. But if i were to create my own class, say Complex, the following:
Complex foo()
{
Complex a = Complex(2,4);
return a;
}
int main()
{
foo() = Complex(1,2);
}
would actually work. I thought the only way for this to compile is if foo() returned a reference. What am i missing? i assume there is a difference between primitives and Classes - isn't the return value of Complex foo() an rvalue? Thanks!
Aucun commentaire:
Enregistrer un commentaire