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