在star之前的C++中的const
修飾符意味着使用此指針時,指向的值不能更改,而指針本身可以指向其他指針。在下面的const const指針參數的非const指針參數
void justloadme(const int **ptr)
{
*ptr = new int[5];
}
int main()
{
int *ptr = NULL;
justloadme(&ptr);
}
justloadme
函數不應該被允許編輯的整數值(如果有的話)由通過PARAM指出,雖然它可以編輯INT *值(因爲該常量不是第一球星後) ,但仍然爲什麼我會在GCC和VC++中都遇到編譯器錯誤?
GCC:錯誤:無效的轉換從int**
const int**
到
VC++:錯誤C2664:從 '詮釋**' 不能轉換參數1至 'const int的**': 'justloadme'。轉換失去限定符
爲什麼說轉換失去了限定符?它是不是獲得const
限定符?此外,它是不是類似strlen(const char*)
我們通過一個非const char*
http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.17 – Anycorn 2010-08-09 07:40:12