C++ - 类指针和类对象在初始化中的区别

Ark*_*tos 5 c++ class

在 C++ 中假设我有

class Sample{
 public:
 void someFunction();
};
Run Code Online (Sandbox Code Playgroud)

在 main() 中做有什么区别

Sample obj;
obj.someFunction();

AND

Sample *obj = new Sample();
obj->someFunction();
Run Code Online (Sandbox Code Playgroud)

这只是语法问题还是性能/实现差异?什么时候应该使用一个?

Ed *_*eal 5

这是简单的东西 - 与堆和堆栈有关

Sample obj;
obj.someFunction();
Run Code Online (Sandbox Code Playgroud)

obj 在栈上

Sample *obj = new Sample();
obj->someFunction();
Run Code Online (Sandbox Code Playgroud)

在堆上。

这个需要删除。它也存在于范围之外。

性能差不多

  • https://software.intel.com/en-us/blogs/2009/08/24/what-you-need-to-know-about-prefetching 此外,当范围开始时,编译器会知道东西的位置。 (2认同)