91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在異常處理中處理析構函數

發布時間:2020-07-25 02:41:39 來源:網絡 閱讀:401 作者:巖梟 欄目:編程語言

例1:在異常處理中處理析構函數。

程序:

#include<iostream>

#include<string>

using namespace std;

class Student

{

public:

Student(int n, string nam)//定義構造函數

{

cout << "constructor-" << n << endl;

num = n;

name = nam;

}

~Student()//定義析構函數

{

cout << "destructor-" << num << endl;

}

void get_data();

private:

int num;

string name;

};


void Student::get_data()

{

if (num == 0)//如果num=0,拋出int型變量num

{

throw num;

}

else//如果num不等于0,輸出num,name

{

cout << num << " " << name << endl;

}

cout << "in get_data()" << endl;

}


void fun()

{

Student stud1(1101, "tan");

stud1.get_data();

Student stud2(0, "li");

stud2.get_data();

}


int main()

{

cout << "main begin" << endl;//表示主函數開始了

cout << "call fun()" << endl;//調用fun()函數

try

{

fun();

}

catch (int n)

{

cout << "num=" << n << ",error!" << endl;//num=0出錯

}

cout << "main end" << endl;//表示主函數結束

system("pause");

return 0;

}

程序分析:

在異常處理中處理析構函數在異常處理中處理析構函數

main begin

call fun()

constructor-1101

1101 tan

in get_data()

constructor-0

destructor-0

destructor-1101

num=0,error!

main end

請按任意鍵繼續. . .

例2:在上題的基礎上進行變形,分析執行過程,由于異常處理調用了哪些析構函數。

程序:

#include<iostream>

#include<string>

using namespace std;

class Student

{

public:

Student(int n, string nam)//定義構造函數

{

cout << "constructor-" << n << endl;

num = n;

name = nam;

}

~Student()//定義析構函數

{

cout << "destructor-" << num << endl;

}

void get_data();

private:

int num;

string name;

};


void Student::get_data()

{

if (num == 0)//如果num=0,拋出int型變量num

{

throw num;

}

else//如果num不等于0,輸出num,name

{

cout << num << " " << name << endl;

}

cout << "in get_data()" << endl;

}


void fun()

{

Student stud1(1101, "tan");

stud1.get_data();

try

{

Student stud2(0, "li");

stud2.get_data();

}

catch (int n)

{

cout << "num=" << n << ",error!" << endl;//num=0出錯

}

}


int main()

{

cout << "main begin" << endl;//表示主函數開始了

cout << "call fun()" << endl;//調用fun()函數

fun();

cout << "main end" << endl;//表示主函數結束

system("pause");

return 0;

}

程序分析:和上題的不同之處在與,本題在輸出“destructor-0”后,再執行catch語句,輸出“num=0,error!”,fun函數執行完畢,在流程轉回main函數之前先調用stud1的析構函數,輸出“destructor-1101”,最后執行main函數中最后一行cout語句,輸出“main end”。

運行結果:

main begin

call fun()

constructor-1101

1101 tan

in get_data()

constructor-0

destructor-0

num=0,error!

destructor-1101

main end

請按任意鍵繼續. . .


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额尔古纳市| 黄梅县| 岫岩| 彭州市| 巫山县| 河南省| 乌兰浩特市| 韶关市| 休宁县| 清徐县| 岑溪市| 宝坻区| 始兴县| 海晏县| 上犹县| 资阳市| 睢宁县| 龙口市| 松潘县| 合阳县| 靖远县| 绍兴市| 长泰县| 当阳市| 邓州市| 吉安市| 来安县| 霍林郭勒市| 钦州市| 安福县| 普陀区| 大厂| 普定县| 高密市| 常熟市| 大安市| 虹口区| 毕节市| 满城县| 和平县| 浮山县|