ред на операции при копиране на обект в обект и copy-elision
Здравейте,
какъв е редът на операциите тук, след като не сме казали предварително Vehicle v;
Кога се създава обекта v ?
= означава копиране на създадения обект в дясно върху обекта от ляво, но понеже в случая е и инициализация, не се ли включва copy-elision-a и директно да се създаде v със стойностите в дясно, в случая само с полето 250 ?
Vehicle v = Airplane(250, 10000, 0);
Поздрави!
struct Vehicle {
public: double speed;
Vehicle() : speed(0) {}
};
class Airplane : public Vehicle {
public: double speed; double altitude; double heading;
Airplane(double speed, double altitude, double heading)
: speed(speed), altitude(altitude), heading(heading) {}
};
int main() {
Vehicle v = Airplane(250, 10000, 0); std::cout << v.speed << std::endl;
//...