1 異常的型別2 返回匿名物件時,catch捕獲時的淺拷貝問題解決
由於返回的是匿名物件,只是簡單的賦值後,catch的e=myexceptin()淺拷貝後,匿名物件就會呼叫析構釋放掉error;而當e執行完catch的語句後,也觸發一次析構函式,這樣就重複析構error,容易報錯,所以返回物件時,我們都要重寫拷貝構造和等號運算子過載。
3 **例子
#define _crt_secure_no_warnings
#include
using
namespace std;
class
myexception
// 以後物件的異常都要 重寫拷貝構造 和 =號運算子過載
myexception
(const myexception &other)
myexception&
operator=(
const myexception &other)if(
this
->error !=
null
)this
->error =
newchar
[strlen
(other.error)+1
];strcpy
(this
->error, other.error)
;return
*this;}
// 處理該類的異常方法
void
handleerror()
myexception()
}private
:char
*error;};
void
fun(
)void
test01()
catch
(myexception e)
}int
main()
Item 21 需要返回物件時,不要返回引用
乙個典型的場景如下 class rational friend const rational operator const rational lhs,const rational rhs rational a,b rational c a b 注意operator 返回的是 rational 例項,...
關於返回可選型別的異常丟擲函式
大家知道,在可選鏈 optional chain 裡,返回可選型別的可選鏈返回的仍是可選型別。但是要注意的是,在異常處理裡,對於返回型別是可選型別 optional 的異常丟擲函式,其返回型別是可選的可選型別。非常繞口是不是,對啦 就是這樣 2333333333。簡單來說,對於下面這個異常丟擲函式 ...
C 關於函式返回物件型別的說明
1.返回const物件的引用 返回引用不會呼叫複製建構函式,效率更高 引用指向的物件應在呼叫函式執行時存在,不能是函式中的區域性變數 當引數都為const,函式返回其一的時候,必須也為const 2.非const物件的引用 兩種常見情況 過載賦值運算子 使其可以連續賦值 s1 s2 s3 過載 使其...