c++ - 是否使用指针

标签 c++ pointers

下面两种从实例调用函数的方式会有区别吗?哪个更好?

    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/

相关文章:

c++ - 如何从 LLVM 中的 CallInst 获取间接调用的函数名称

c++ - 查找数组中的最小值(我的代码有什么问题?)

c++ - 理解 C++ 中的 const_cast

调用 sprintf : "expected ' char *' but argument is of type ' char'"的编译器错误

c++ - 重新检查时指针属性发生变化

python - 在 Python 中将整数列表解释为 float

c++ - 什么是大括号或等于初始值设定项?

c++ - 您的计算机 Debug模式 Visual C++ 2012 上缺少 MSVCP100D.dll

c - 我只是不明白这个指针的情况

我们可以在 fread 函数中使用 0 地址吗