从实例调用函数的以下两种方式之间是否会有区别?哪个更好?
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/