請問一下,解構式裡為何可以再delete 陣列? |
尚未結案
|
woods
一般會員 ![]() ![]() 發表:11 回覆:8 積分:3 註冊:2003-10-14 發送簡訊給我 |
MPIGAGeneticAlgorithm(GAGeneticAlgorithm* ga, const MPIGAGenome &mg); MPIGAGeneticAlgorithm(GAGeneticAlgorithm & ga, const MPIGAGenome &mg); 請問一下 上述兩種有何不同呢 /* Destructor */ ~MPIGAGeneticAlgorithm(){delete [] bestArray; delete [][]precedenceArray;} 解構式裡為何可以再delte 陣列請各位大大幫忙 |
pental
初階會員 ![]() ![]() 發表:3 回覆:48 積分:30 註冊:2003-09-21 發送簡訊給我 |
通常會在解構式中把物件建構時所配置的記憶體區塊釋放掉,物件在消滅之前,是會先執行解構式的,所以就會在看這樣的寫法囉! MPIGAGeneticAlgorithm(GAGeneticAlgorithm* ga, const MPIGAGenome &mg);
MPIGAGeneticAlgorithm(GAGeneticAlgorithm & ga, const MPIGAGenome &mg);
至於這兩個有什麼不一樣呢?
上面的 GAGeneticAlgorithm* ga 是 call by address
下面的 GAGeneticAlgorithm & ga 是 call by reference
|
woods
一般會員 ![]() ![]() 發表:11 回覆:8 積分:3 註冊:2003-10-14 發送簡訊給我 |
|
pental
初階會員 ![]() ![]() 發表:3 回覆:48 積分:30 註冊:2003-09-21 發送簡訊給我 |
基本上兩個是一樣的東西,在 Thinking in C 裡面有提到,
Call by refrence 的寫法是比較簡潔,以下是擷取自 Thinking in C
裡面的簡單範例 //: C11:Reference.cpp
// Simple C references
int* f(int* x)
{
(*x) ;
return x; // Safe, x is outside this scope
} int& g(int& x)
{
x ; // Same effect as in f()
return x; // Safe, outside this scope
}
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |