我在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