1. 對於好的程式設計習慣來說,declare乙個指標,則初始化為null,如果是類成員 則在建構函式中initialize,當對指標使用delete時候,則置它為null。
2. firefox外掛程式sqlite manager的使用
3. c++ 類中特殊的成員變數(常變數、引用、靜態)的初始化方法
**自
有些成員變數的資料型別比較特別,它們的初始化方式也和普通資料型別的成員變數有所不同。這些特殊的型別的成員變數包括:
a.引用
b.常量
c.靜態
d.靜態常量(整型)
e.靜態常量(非整型)
常量和引用,必須通過引數列表進行初始化。
靜態成員變數的初始化也頗有點特別,是在類外初始化且不能再帶有static關鍵字,其本質見文末。
class bclass
// 對於常量型成員變數和引用型成員變數,必須通過引數化列表的方式進行初始化
//普通成員變數也可以放在函式體裡,但是本質其實已不是初始化,而是一種普通的運算操作-->賦值運算,效率也低
private:
int i; // 普通成員變數
const int ci; // 常量成員變數
int &ri; // 引用成員變數
static int si; // 靜態成員變數
//static int si2 = 100; // error: 只有靜態常量成員變數,才可以這樣初始化
static const int csi; // 靜態常量成員變數
static const int csi2 = 100; // 靜態常量成員變數的初始化(integral type) (1)
static const double csd; // 靜態常量成員變數(non-integral type)
//static const double csd2 = 99.9; // error: 只有靜態常量整型資料成員才可以在類中初始化
};//注意下面三行:不能再帶有static
int bclass::si = 0; // 靜態成員變數的初始化(integral type)
const int bclass::csi = 1; // 靜態常量成員變數的初始化(integral type)
const double bclass::csd = 99.9; // 靜態常量成員變數的初始化(non-integral type)
// 在初始化(1)中的csi2時,根據著名大師stanley b.lippman的說法下面這行是必須的。
// 但在vc2003中如果有下面一行將會產生錯誤,而在vc2005中,下面這行則可有可無,這個和編譯器有關。
const int bclass::csi2;
int main()
靜態成員屬於類作用域,但不屬於類物件,和普通的static變數一樣,程式一執行就分配記憶體並初始化,生命週期和程式一致。
所以,在類的建構函式裡初始化static變數顯然是不合理的。
靜態成員其實和全域性變數地位是一樣的,只不過編譯器把它的使用限制在類作用域內(不是類物件,它不屬於類物件成員),要在類的定義外(不是類作用域外)初始化。
4.函式的區域性變數作函式的返回值
(1). 如果返回乙個基本型別的變數,比如:
int a;
a = 5;
return a;
那麼就會a的乙個拷貝,即5返回,然後a就被銷毀了。儘管a被銷毀了,但它的副本5還是成功地返回了,所以這樣做沒有問題。
(2). 但是對於指標,像1那麼做就會有問題,比如在某個函式內部:
int a = ;
return a;
那麼也會返回指標a的乙個拷貝,我們假定a的位址值為0x002345fc,那麼這個 0x2345fc是能夠成功返回的。當return執行完成後,a就要被銷毀,也就是0x002345fc所 指向的記憶體被**了。如果這時候在函式外面, 去位址0x002345fc取值,那得到的結果肯定是不對的。這就是為什麼不能返回區域性指標的原因。返回區域性變數的引用的道理 和這個類似。
(3). 對於靜態變數:
static int b=10;
return &b;
由於靜態變數是存放在靜態儲存區的,所以不會被系統**,所以返回值還是有效的。
有些成員變數的資料型別比較特別,它們的初始化方式也和普通資料型別的成員變數有所不同。這些特殊的型別的成員變數包括:
a.引用
b.常量
c.靜態
d.靜態常量(整型)
e.靜態常量(非整型)
常量和引用,必須通過引數列表進行初始化。
靜態成員變數的初始化也頗有點特別,是在類外初始化且不能再帶有static關鍵字,其本質見文末。
class bclass
// 對於常量型成員變數和引用型成員變數,必須通過引數化列表的方式進行初始化
//普通成員變數也可以放在函式體裡,但是本質其實已不是初始化,而是一種普通的運算操作-->賦值運算,效率也低
private:
int i; // 普通成員變數
const int ci; // 常量成員變數
int &ri; // 引用成員變數
static int si; // 靜態成員變數
//static int si2 = 100; // error: 只有靜態常量成員變數,才可以這樣初始化
static const int csi; // 靜態常量成員變數
static const int csi2 = 100; // 靜態常量成員變數的初始化(integral type) (1)
static const double csd; // 靜態常量成員變數(non-integral type)
//static const double csd2 = 99.9; // error: 只有靜態常量整型資料成員才可以在類中初始化
};//注意下面三行:不能再帶有static
int bclass::si = 0; // 靜態成員變數的初始化(integral type)
const int bclass::csi = 1; // 靜態常量成員變數的初始化(integral type)
const double bclass::csd = 99.9; // 靜態常量成員變數的初始化(non-integral type)
// 在初始化(1)中的csi2時,根據著名大師stanley b.lippman的說法下面這行是必須的。
// 但在vc2003中如果有下面一行將會產生錯誤,而在vc2005中,下面這行則可有可無,這個和編譯器有關。
const int bclass::csi2;
int main()
靜態成員屬於類作用域,但不屬於類物件,和普通的static變數一樣,程式一執行就分配記憶體並初始化,生命週期和程式一致。
所以,在類的建構函式裡初始化static變數顯然是不合理的。
靜態成員其實和全域性變數地位是一樣的,只不過編譯器把它的使用限制在類作用域內(不是類物件,它不屬於類物件成員),要在類的定義外(不是類作用域外)初始化。
4.函式的區域性變數作函式的返回值
(1). 如果返回乙個基本型別的變數,比如:
int a;
a = 5;
return a;
那麼就會a的乙個拷貝,即5返回,然後a就被銷毀了。儘管a被銷毀了,但它的副本5還是成功地返回了,所以這樣做沒有問題。
(2). 但是對於指標,像1那麼做就會有問題,比如在某個函式內部:
int a = ;
return a;
那麼也會返回指標a的乙個拷貝,我們假定a的位址值為0x002345fc,那麼這個 0x2345fc是能夠成功返回的。當return執行完成後,a就要被銷毀,也就是0x002345fc所 指向的記憶體被**了。如果這時候在函式外面, 去位址0x002345fc取值,那得到的結果肯定是不對的。這就是為什麼不能返回區域性指標的原因。返回區域性變數的引用的道理 和這個類似。
(3). 對於靜態變數:
static int b=10;
return &b;
由於靜態變數是存放在靜態儲存區的,所以不會被系統**,所以返回值還是有效的。
程式設計習慣(慢慢總結)
1.getview裡面不要new物件 2.自定義view的建構函式 3.駝峰 4.事件不要和activity繫結 5.宣告時按類別功能 6.按照xml順序findviewbyid 7.xml中少巢狀布局,多用relativelayout少用linearlayout 8.baseactivity 9....
oracle程式設計 操作不良習慣總結
一.oracle程式設計方面 1.oracle的 書寫格式不規範,可以參照oracle自帶的 格式進行編寫。2.oracle物件的命名規則要統一,不要使用數字 中文 拼音,要做到知名見義。3.表名 欄位名必須要加注釋。例 comment on table 表名 is 對錶注釋的內容 給表新增注釋 c...
簡要總結良好的C 程式設計習慣
簡要總結一些良好的程式設計習慣,一方面加深自己的印象,一方面與大家共勉。1 使用指標前先判空。即 if ptr 2 刪除指標前先判空,並賦空值。即 if ptr 3 遇到除數時先判零。即 if divisor 4 在明確了方法不會改變引數的情況下盡量用const。即 fun const.const ...