C++ C++;从函数返回指针

C++ C++;从函数返回指针,c++,pointers,C++,Pointers,这个问题似乎已经被问过/回答过很多次了,但我仍然觉得我不确定 这两种方法之间有区别吗?它们中的任何一种都可以使用吗 SomeClass* GetSomeClass(){ SomeClass *sc = new SomeClass(); // do something with sc return sc; } Vs 两者之间没有区别。它们都构造一个对象并返回指向该对象的指针,调用方在处理完该对象后将其保留为删除。是的,它们完全相同 第一个代码为: SomeClass po

这个问题似乎已经被问过/回答过很多次了,但我仍然觉得我不确定

这两种方法之间有区别吗?它们中的任何一种都可以使用吗

SomeClass* GetSomeClass(){
    SomeClass *sc = new SomeClass();
    // do something with sc
    return sc;
}
Vs


两者之间没有区别。它们都构造一个对象并返回指向该对象的指针,调用方在处理完该对象后将其保留为删除。

是的,它们完全相同

第一个代码为:

SomeClass pointer sc = new SomeClass();
return SomeClass pointer sc
第二个代码是单词

SomeClass pointer sc = new SomeClass();
SomeClass pointer rSc = SomeClass pointer sc
return SomeClass pointer rSc

正如您自己所读/看到的,没有区别,因为第二个示例中的第二条语句无论如何都是多余的

您想快速回顾一下指针吗?妈的,意思是说return sc,rsc etcWhy您不只是编译这两条语句并检查输出(最好是作为汇编)是否存在差异?没有逻辑上的区别。根据编译器的优化功能,它可能会为这两种情况生成相同的代码(事实上可能是相同的)。在没有优化的情况下,由于额外的分配和复制,第二个版本将产生性能稍差(如纳秒)的代码。
SomeClass pointer sc = new SomeClass();
SomeClass pointer rSc = SomeClass pointer sc
return SomeClass pointer rSc