从实例调用函数的以下两种方式之间是否会有区别?哪个更好?

    Motor M;
    M.moveToPosition(Speed, TargetPosition);

    Motor *M;
    M->moveToPosition(Speed, TargetPosition);

谢谢!

最佳答案

您的第二个版本具有Undefined Behavior,因为该指针未初始化!

您可以动态分配Motor类型的对象(即在堆上分配):

Motor *M = new Motor;
M->moveToPosition(Speed, TargetPosition);
...
delete M;

Smart Pointers将帮助您避免必须记住删除在堆上分配的对象。

至于哪个更好,恐怕很大程度上取决于上下文。通常,在C++中,除非有明确的相反原因,否则您应该首选自动对象(在堆栈上)而不是动态对象(在堆上)。

关于c++ - 是否使用指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9823924/

10-11 19:10