#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i1 = 0;
int i2 = 10;
const int *p = &i1;
int const *p2 = &i1;
const int const *p3 = &i1;
p = &i2;
p2 = &i2;
p3 = &i2;
cout << *p << endl
<< *p2 <<endl
<< *p3 <<endl;
return 0;
}
該代碼可以用VC6.0和VC2010編譯。 但我有疑問的打擊:關於「int const * p」和「const int * p」
const int的* P = &i1;
這意味着什麼, 「P」 點不能被修改,但不能通過p修改,是嗎? 所以
P = &i2;
這條線可編譯,是嗎?
這條線:
int const *p2 = &i1;
在我看來,這意味着什麼,而P2點是可以改變的,我說的對P2不能被修改? 爲什麼
P2 = &i2;
可以編譯?
關於這一行:
const int的常量* P3 = &i1;
P3 = &i2;
哦,天哪......我瘋了。我不知道爲什麼這行可以編譯沒有錯誤... 任何機構可以幫助我嗎?
這讓我感到困惑的另一個代碼是在這裏:
class Coo2
{
public:
Coo2() : p(new int(0)) {}
~Coo2() {delete p;}
int const * getP() const
{
*p = 1;
return this->p;
}
private:
int* p;
};
爲什麼這個代碼可以編譯? 在
INT常量* getP()const的
我更改數值或* P!
'const'適用於左邊的東西,除非左邊沒有東西,在這種情況下它適用於右邊的東西。 (是的,這是不必要的混淆和愚蠢。) – GManNickG 2011-03-11 03:07:23
'const'在最後意味着不會對對象/類進行更改。 – 2011-03-11 03:21:07