struct中可不可以有const的量呢
const 修飾一個變量時,編譯器認為這個變量是一個不可修改的,但是他和其他變量一樣具有存儲空間,如果使用強制轉換,同樣可以被訪問,例如:
const int i=3;
(*(int*)&i)=4;
結果i的值為4。
這就是說,在C/C++中,const修飾的變量必須在聲明時給予一個特定值,在以后過程中永不修改,初始化的值可以是一個常數,也可以是一個變量或者表達式,例如
const int i=3;
const int j=argc;
const int k=argc*i;
無論是在C還是在C++語言中,struct結構都是可以包含const成員變量的。
const成員變量可以在聲明的時初始化,也可以不初始化,但是聲明后,const變量就不能訪問了。
例如,在C語言中(TC2.0)
struct TYPE{
const int a;
int b;
};
那么以下的操作都是合法的
struct TYPE t={1,2};
struct TYPE t={1};
struct TYPE t;
這是符合const的基本定義的:只能在聲明時初始化,其他時間都不能訪問這一點。
對于C++語言,則可以在構造函數的初始化化列表中:
struct TYPE{
const int a;
int b;
TYPE(int aval):a(aval){}
};
注意:只能在初始化參數列表中,這種形式就是錯誤的:
TYPE(int aval){ a=aval;}
對于C++編譯器,他只認為,在初始化列表中顯示的初始化才是符合const精神的。
posted on 2008-12-17 16:41 肥仔 閱讀(1850) 評論(1) 編輯 收藏 引用 所屬分類: C++ 基礎