我在C++中编写了以下3个函数。请向我解释所有返回类型是如何不同的?以及返回值将如何存储在内存中?我知道const关键字适用于即时左侧的任何内容,但我需要更多解释。函数声明的返回类型中的const关键字
const int* sample1();
int* const sample2();
int const* sample3();
我在C++中编写了以下3个函数。请向我解释所有返回类型是如何不同的?以及返回值将如何存储在内存中?我知道const关键字适用于即时左侧的任何内容,但我需要更多解释。函数声明的返回类型中的const关键字
const int* sample1();
int* const sample2();
int const* sample3();
const int* sample1();
int const* sample3();
这些功能是相同的。它们返回指向常量内存的指针(这个内存不能通过这个指针改变)。但是我们可以改变指针本身。例如增加它。
int* const sample2();
该函数返回指向非常量内存的常量指针。我们不能改变指针本身,但我们可以改变它所指向的内存。
常量不必适用于什么是右侧紧邻。例如
class Foo
{
void Bar() const;
int var;
}
这将将禁止功能酒吧在美孚来改变对象的任何成员变量。 除此之外us2012的评论总结了一切。
我可能完全没有,但这似乎是一个学校任务或什么?
1和3在语义上是相同的。当涉及到“它如何存储在内存中”时,三者都是相同的,只有在编译时才考虑const。 – us2012 2013-03-05 12:16:57
为什么人们对这个(恕我直言)非常有效的问题下降评级,即使没有解释他们为什么降低评分。感谢它,但这正是我正在寻找的(我的意思是下面的答案);-) – christianparpart 2015-03-14 08:52:29