昨天電腦問題 補昨日8 3複習內容 異常與檔案操作

2021-08-22 05:53:09 字數 4325 閱讀 5850

1.型別轉換

c 方式 強制型別轉換過於粗暴  各種型別間可以隨意轉換 編譯器難以判斷正確性

#include #include using namespace std;

class a

;void a::seta(int a)

a::a()

class b :public a

;void b::setb(int b)

b::b()

//c語言中的無敵強制型別轉換

中的普通型別轉換static_cast 是在編譯時期轉換的 執行時無法檢測型別

中的強制型別轉換reinterpret_cast

中的常型別轉換const_cast

int main()

2.異常處理機制

發生錯誤時 就丟擲問題 讓接收的 進行處理

/*簡單了解一下 異常處理機制*/

/* 一層丟擲 */

#include #include using namespace std;

double div(double a, double b)

return a / b;

}int main()

catch (int)

catch (char)

system("pause");

return 0;

}/* 兩層 或者 多重丟擲 */

#include #include using namespace std;

double div(double a, double b)

return a / b;

}double f(double x, double y)

catch (char) }

int main()

catch (int)

catch (char)

system("pause");

return 0;

}/* 注意如果函式宣告的時候 後面接throw() 括號裡有什麼型別 就只可以丟擲什麼型別的異常 沒有就無法丟擲異常 看到相應**要認識 */

#include #include using namespace std;

double div(double a, double b) throw();

double f(double x, double y)

catch (char) }

int main()

catch (int)

catch (char)

system("pause");

return 0;

}double div(double a, double b) throw()

return a / b;

}/* 丟擲異常 的過程中 建立了類物件 在對應的括號結束時 會自動析構(相當於函式體結束) */

#include #include using namespace std;

class test

;test::test()

test::~test()

double div(double a, double b)

return a / b;

}int main()

catch (int)

catch (char)

system("pause");

return 0;

} /* 如果丟擲 類物件 */

#include #include using namespace std;

class test

;test::test()

test::~test()

double div(double a, double b)

return a / b;

}int main()

catch (test)

// catch (test &)

// // catch (test *t)

// system("pause");

return 0;

}

3.異常類

異常是類 – 建立自己的異常類

異常派生

異常中的資料:資料成員

按引用傳遞異常

在異常中使用虛函式

案例:設計乙個陣列類 myarray,過載操作,

陣列初始化時,對陣列的個數進行有效檢查 

index<0 丟擲異常enegative  

index = 0 丟擲異常 ezero  

3)index>1000丟擲異常etoobig 

4)index<10 丟擲異常etoosmall 

5)esize類是以上類的父類,實現有引數構造、並定義virtual void printerr()輸出錯誤。

#include #include using namespace std;

class myarray

virtual void printerror() = 0;

}; class enegative : public esize

void printerror()

};class ezero : public esize

void printerror()

};class toosmall : public esize

void printerror()

};class toobig : public esize

void printerror()

}; };

myarray::myarray(int l)

else if (l == 0)

else if (l > 0 && l <= 10)

else if (l > 1000 )

m_len = l;

m_data = new char[m_len + 1];

}myarray::~myarray()

int main()

catch (myarray::enegative &e) /*上面說過的用 & 去接收; 這裡因為是類中類

所以加上域限制*/

catch (myarray::toosmall &e)

catch (myarray::toobig &e)

system("pause");

return 0;

}

4.建立自己的異常類

#include #include using namespace std;

class myexception :public exception

virtual const char * what() const throw() };

double div(double x , double y)

return x / y;

}int main()

catch (myexception &a)

system("pause");

return 0;

}

5.檔案操作

#include #include #include using namespace std;

int main()

/* 開啟檔案 輸入程式 */

#include #include #include using namespace std;

int main()

; ifstream ifs("hello.txt",ios::in); //建立檔案物件 開啟方式為 讀出 從檔案讀出 到 程式

//ifs >> buf;

//cout << "read from hello.txt :" << buf << endl;

char ch;

while ((ch = ifs.get()) != eof)

cout << endl;

system("pause");

return 0;

}/* 開啟第乙個檔案 將其中內容 複製到 另乙個檔案中 */

#include #include #include using namespace std;

int main()

; ifs.read(buf , 32);

//char buf[32] = "*********x";

//ofs << buf;

ofs.write(buf , 32);

ofs.close();

system("pause");

return 0;

}

新揚天電腦所配USB鍵盤功能鍵驅動問題注意事項

新揚天電腦所配usb鍵盤功能鍵驅動問題注意事項 文章編號 39949 2011 10 18 17 38 15 10年7月上市的新揚天 電腦所配 usb鍵盤,f1 f12 系統下會預設為快捷鍵 功能鍵 而非 f1 f12 實際功能。可能會導致使用者在使用習慣上的不適應。可以帶使用者關閉鍵盤的特殊功能,...

昨天解決的問題

今天學習的內容 1 清理類的使用,新建乙個類設定 方框 清除兩者,方在結束div的前面。2 滑動門技術 1,新建 邊界與填充為0 2,新建 li 標籤 背景 不重複,水平位置 右對齊,垂直位置 頂部。3,新建 a 標籤 背景 不重複,水平位置 左對齊,垂直位置 頂部。3 傳ruby動態引數.呵呵,這...

下週計畫 封陽台 配電腦 補手機

8月8日,同老婆來長沙趁著奧運之夜倒長沙出差 租房中發生一起嚴重的民事案件 犯罪嫌疑人估計知道家中沒人 破門而入 盜走了我的psp2000,還有老婆的家用電腦acer 4310膝上型電腦。10月18日,獨自一人坐車從宜昌再到長沙,該路線無航班 無火車 坐著臥鋪大巴8小時候凌晨來到了長沙西站 長沙郊區...