[導入]Exception C++ 之 16
- 如果需要的話,請編寫一個私有函數來使拷貝操作和拷貝賦值共享代碼;千萬不要利用“使用顯式的析構函數并且后面跟一個 placement new”的方法來達到“以拷貝構造操作實現拷貝賦值操作”這樣的目的。也就是說,決不要編寫如下的代碼:
T& T::operator=(const T &other)
{
if(this != &other)
{
this->~T(); // 有害!
new (this) T(other); // 有害!
}
return *this;
} - 關于拷貝賦值操作符有兩點需要注意:
- 將拷貝賦值操作聲明為“T& T::operator=(const T&)”
- 不要返回 const T&,盡管這樣做避免了諸如“(a = b) = c”的用法;這樣做意味著:你無法出于移植性的考慮而將 T 對象放入標準程序庫之容器 -- 因為其需要賦值操作返回一個單純的 T&。
文章來源:http://my.donews.com/robinchow/2007/01/14/uufhhtovwfvygicxibjufbugcnhamivhcapk/
posted on 2007-10-23 20:51 Robin Chow 閱讀(61) 評論(0) 編輯 收藏 引用