Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回常量int*与返回常量int*引用_C++_Pointers - Fatal编程技术网

C++ 返回常量int*与返回常量int*引用

C++ 返回常量int*与返回常量int*引用,c++,pointers,C++,Pointers,如果我有一个成员函数,它返回一个我用来访问其他对象的指针 优化代码的最佳方法是什么?我应该返回const int*还是const int*& 编辑。我的意思是:返回指针是否涉及副本?对于编译器来说,返回指针的引用是否容易优化?我不会将返回值赋给任何变量: my_object.get_ptr()->function(); 指针和引用的大小相同,所以这不重要。(在我看来,这也是一个需要担心的小问题) 这是我从中获得信息的链接 我不认为这是一种优化。我会选择使代码更容易理解和更正的方式。请看以

如果我有一个成员函数,它返回一个我用来访问其他对象的指针

优化代码的最佳方法是什么?我应该返回
const int*
还是
const int*&

编辑。我的意思是:返回指针是否涉及副本?对于编译器来说,返回指针的引用是否容易优化?我不会将返回值赋给任何变量:

my_object.get_ptr()->function();

指针和引用的大小相同,所以这不重要。(在我看来,这也是一个需要担心的小问题)

这是我从中获得信息的链接

我不认为这是一种优化。我会选择使代码更容易理解和更正的方式。请看以下内容。


显然,为了使程序正确,必须使用指针引用(反之亦然)!然而,在这种情况下,在通过值和通过引用之间进行选择并不是一个真正的优化问题。哪种方式会导致您期望的行为

它只是一个整数。您希望优化的开销是多少
const int*
很好,simpleThose是非常不同的类型。在一种情况下,它是一个指向
int
的指针,您没有对其进行修改的权限。在另一种情况下,有权读取或修改存储在其他位置的指针,该指针指向
int
,而其他位置的存储无权修改该指针。很少有情况下,这些选择之间的区别是“哪个更快”。这就像在问“什么地方更适合修剪指甲,火箭船还是潜艇?”忘记优化,强调健壮性、正确性和质量。您的优化是一种“微观优化”,与设计或更大的优化相比,优化的效果可以忽略不计。在担心这些类型的优化之前,请使用分析器。+1表示正确性和可读性。太多人花太多时间进行微优化,这对性能和价值回报的影响微乎其微。我的对象与迭代器相似(但不完全相同)。这就是为什么优化掉不必要的副本是相关的。在我链接的网站内的示例中,您应该注意通过引用传递指针也会导致内存泄漏。第一个例子实际上是内存泄漏。您需要考虑指针的引用实际上是什么。指针和对指针的引用是不同的类型。因此,将其视为优化是不正确的。我知道它们是不同的东西。。。但是我会以同样的方式使用它们,也就是说,我不需要修改返回值。