20
高高高高高高高高高 高高高高高高高高高

高等程式語言實習課

  • Upload
    everly

  • View
    50

  • Download
    0

Embed Size (px)

DESCRIPTION

高等程式語言實習課. http://helldeathscythe.myweb.hinet.net/. Constructor and Destructor. Constructor 建構子 物件生成時設定初值 沒有回傳值 必須被宣告成 public 類似 int x=10; => int x(10);. Constructor and Destructor. frac. - PowerPoint PPT Presentation

Citation preview

Page 1: 高等程式語言實習課

高等程式語言實習課高等程式語言實習課

Page 2: 高等程式語言實習課

http://helldeathscythe.myweb.hinet.net/http://helldeathscythe.myweb.hinet.net/

Page 3: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

Constructor Constructor 建構子建構子– 物件生成時設定初值物件生成時設定初值– 沒有回傳值沒有回傳值– 必須被宣告成必須被宣告成 publicpublic– 類似類似 int x=10; => int x(10);int x=10; => int x(10);

Page 4: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

fracfracclass frac{public:

int up; // 分子int down; // 分母int gcd(int x, int y);// 約分時呼叫用void setfrac(int u,int d); // 設定分數void reduce(); // 約分void print(string msg); // 印出分數frac frac_add(const frac &f); // 分數加法frac frac_div(const frac &f); // 分數除法

};

Page 5: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

fracfracvoid main()

{

frac a;a.setfrac(28,-35);a.print("a="); // 印出 f=-15/20

frac b;

b.setfrac(21,24);

frac c;

c.setfrac(27,-36);}

Page 6: 高等程式語言實習課

使用建構子呢使用建構子呢 ??

Page 7: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

fracfracvoid main()

{

frac a(28,-35);a.print("a="); // 印出 f=-15/20

frac b(21,24);

frac c(27,-36);

}

Page 8: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

建構子的種類建構子的種類– Default Default constructor (constructor ( 沒有參數的建構子沒有參數的建構子 ))– Copy Copy Constructor (Constructor ( 參數是自己的建構子參數是自己的建構子 ))– Conversion Constructor (Conversion Constructor ( 有參數的建構子有參數的建構子 ))

Page 9: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

Conversion Constructor (Conversion Constructor ( 有參數的建構子有參數的建構子 ))class frac{public:

int up; // 分子int down; // 分母frac(int u,int d):up(u),down(d) {}

};

frac(int u,int d)

{

up=u;

down=d;

}當你傳遞的物件 沒有實作” =” 時 使用 constructor 傳遞物件 !!!

Page 10: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

Default Default constructor (constructor ( 沒有參數的建構子沒有參數的建構子 ))class frac{public:

int up; // 分子int down; // 分母frac()

{

up=0;

down=1;

}};

Page 11: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

Copy Copy Constructor (Constructor ( 參數是自己的建構子參數是自己的建構子 ))class frac{public:

int up; // 分子int down; // 分母frac(const frac &f)

{

up=f.up;

down=f.down;

}};

Page 12: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

這是什麼建構子這是什麼建構子 ??class frac{public:

int up; // 分子int down; // 分母frac(int n)

{

up=n;

down=1;

}};

Page 13: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

建構子的使用時機建構子的使用時機– 物件產生時物件產生時

Page 14: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor 請問以下程式被執行時,會執行哪些請問以下程式被執行時,會執行哪些 ConstructorConstructor

int main(){

frac *f1, *f2, *f3, *f4;

f1 = new frac ; p1-> print ();

f2 = new frac (3); p2-> print ();

f3 = new frac (3,5); p3-> print ();

f4 = new frac (f3);p4-> print ();

}

Page 15: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor 請問以下程式被執行時,會執行哪些請問以下程式被執行時,會執行哪些 ConstructorConstructor

frac frac_add(frac a,frac b){

frac rlt(a.up*b.down+b.up*a.down,a.down*b.down);return rlt;

}int main(){

frac a(3,4);

frac b(1,4);

frac c = frac_add(a,b);

}

物件生成 !!!

Page 16: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

如果如果 Copy Copy ConstructorConstructor 這樣寫這樣寫,,結果如何結果如何 ??class frac{public:

int up; // 分子int down; // 分母frac(frac f)

{

up=f.up;

down=f.down;

}};

Page 17: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor 請問以下程式被執行時,會執行哪些請問以下程式被執行時,會執行哪些 ConstructorConstructor

int main(){

frac *f;

f = new frac[10];

}

Page 18: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

Destructor Destructor 解構子解構子– 當物件被消滅時執行當物件被消滅時執行– 沒有回傳值 不允許傳遞參數沒有回傳值 不允許傳遞參數– 必須被宣告成必須被宣告成 publicpublic

Page 19: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

Destructor Destructor 解構子解構子– 當你的物件中含有指標時,一定要寫解構當你的物件中含有指標時,一定要寫解構

子子 當物件含有指標時,一定要寫當物件含有指標時,一定要寫

– Copy Copy ConstructorConstructor– Operator =()Operator =()– DestructorDestructor

Page 20: 高等程式語言實習課

Constructor and Constructor and DestructorDestructor

萬年考題萬年考題– 請寫出以下程式執行時物件的生成與消滅順序請寫出以下程式執行時物件的生成與消滅順序

void fun1() { xstr s1; }

void fun2(xstr s3) {}

xstr fun3() { xstr s4; retrun s4;}

void main(){

xstr s;

fun1();

fun2();

s = fun3(); }