Effective C++ 條款10 令operator=返回一個 reference to *this
這章內容十分簡單,主要關於賦值操作時如果你將返回型別宣告為引用型別則可以實現連鎖形式就像內建型別一樣:
int A,B,C;
A=B=C=5;
當你需要為你的類也提供這樣的連續賦值的操作時則賦值操作符的返回值應該返回引用型別
這個規則不僅適合標準賦值,也適合所有賦值相關運算,例如
class Widget
{
public:
Widget& operator=(const Widget&)
{
//........
return *this;
}
Widget& operator+=(const Widget& rhs)
{
//...........
}
};
相關推薦
Effective C++ 條款10 令operator=返回一個 reference to *this
這章內容十分簡單,主要關於賦值操作時如果你將返回型別宣告為引用型別則可以實現連鎖形式就像內建型別一樣: int A,B,C; A=B=C=5; 當你需要為你的類也提供這樣的連續賦值的操作時則賦值操作符的返回值應該返回引用型別 這個規則不僅適合標準賦值,也適合所有賦值相關運算,例如 clas
讀書筆記《Effective c++》 條款10 令operator= 返回一個reference to *this
這個主要的點是,賦值可以寫成連鎖形式: int x, y, z; x = y = z =15; class Widget { public: Widget& operator+=(cons
令operator=返回一個reference to *this
關於賦值,我們可以把它寫成連鎖形式: int x, y, z; x = y = z = 15; 賦值採用右結合律,所以上述賦值被解釋為: x = (y = (z = 15)); 為了實現"連鎖賦值",賦值操作符必須返回一個reference指向操作符的左側實參。這是你為cla
effective c++條款21:必須返回物件時,別忘想返回其reference
在條款20,我們討論了pass-by-value與pass-by-reference-to-const的傳參效率問題,結果是對於自定義型別,pass-by-reference-to-const方式往往更加高效,那麼我們就會想到,如果返回值也
7 More Effective C++—條款10(建構函式內阻止記憶體洩漏)
1 提出問題 上一篇文章中,我們討論瞭如下情況,當函式doSomething()被呼叫時,heap中資源無法被釋放,導致記憶體洩漏問題發生。 void function() { MyObject *object = new MyObject; object-
effective c++條款11:在operator=中處理自我賦值
int a = 3; a = a; 這就是自我賦值,你可能覺得這個自我賦值不痛不癢,造成不了什麼後果,那麼下面這個呢? #include <iostream> using namespace std; class MyClass { public: int *p; publ
Effective C++ 條款11:在operator中處理自我賦值
通常我們在設計一個類併為它聲明瞭賦值操作符時有一種狀況總是需要處理——自賦值,如果使用者在程式碼中注意避免自賦值當然可以但是那是很理想的狀況,在一些複雜的情況下使用者自己可能都不會意識到做了“自賦值”這個操作。例如:  
effective c++條款12:複製物件時勿忘其每一個成分
我們都知道,如果需要,編譯器會為我們自動生成copying函式(拷貝構造與copy assignment操作符)。如果我們想覆蓋它們,只需要自己實現copying函式即可; 但是!!!!!!! 編譯器不樂意了o(╥﹏╥)o:好傢伙,既然你不相信我,那你出了某些錯我可別怪我
14 More Effective C++—條款20(返回值優化RVO)
針對自定義型別MyClass,我們過載“乘法操作符”。下面將討論為何返回型別為const MyClass, 並解釋什麼是RVO。 class MyClass { // public function // private field } const MyClass operator
10 More Effective C++—條款13(catch異常引用的好處)
1 前言 其實本篇文章應與前一篇文章合寫,但是,鑑於上一篇文章文字較多,已經基本成稿,因此,關於為什麼使用catch reference的討論,留在本章進行討論。 同樣,本文章將依照書中順序進行討論 2 異常指標傳遞帶來的麻煩 上篇文章介紹了使用指標進行異常傳遞的方法,如下面
Effective C++ 條款12 賦值物件時勿忘其每一個成分
請記住: 賦值函式應該確保複製物件內的所有成員變數以及所有基類成分; 例如: #include<iostream> using namespace std; class Base { public: Base(){} Base(int x,int y):m
Effective C++ 條款12:複製物件時勿忘其每一個成分 學習筆記
Effective C++ 條款12:複製物件時勿忘其每一個成分 <textarea readonly="readonly" nam ="code" class="c++"> void logCall(const string& funcName); c
Effective c++ 條款11:在operator=中處理“自我賦值”
自我賦值發生在物件被賦值給自己時,且有些時候自我賦值不是這麼容易能被看出來,比如 a[i] = a[j]; //存在自我賦值的可能性(i==j時 ) *px = *py; //存在自我賦值的可能性(px和py指向同一物件) 這些自
Effective C++ 條款12
tracking javascrip tex const cto copy operator hide ext 復制對象時,勿忘其每個成分 作者在本節條款提醒我們,在多重繼承的情況下進行copy或者copy assignment 的operator=的
Effective C++ 條款42
out javascrip 什麽 temp roc clu this 程序猿 turn 本節條款我們討論一下class 關鍵字和typename關鍵字的不同以及對於模板函數(template function)的影響。 例如以下代碼: templ
Effective C++ 條款09
derived 進行 構造 fun 函數調用 傳遞 鏈接 ever nbsp 絕不在構造/析構函數中調用virtual函數。 Never call virtual functions during construction and destruction. 在構造/析構
effective c++ 條款06:若不想使用編譯器自動生成的函數,就該明確拒絕
ble 這樣的 ive c++ 拒絕 類對象 析構 並且 防止 記住:為防止編譯器暗自提供的功能,可將相應的成員函數聲明為privae並且不予實現。也可以使用Uncopyable這樣的父類實現。 對於獨一無二的對象,希望不支持拷貝構造函數和賦值操作符。 class Hom
effective c++ 條款07:為多態基類聲明virtual析構函數
pub effective atomic water delet () IV del effect 記住:帶多態性質的基類應該聲明一個virtual析構函數。如果class帶有任何virtual函數,它就應該擁有一個virtual析構函數。class的設計目的如果不是作為基
effective c++ 條款13:以對象管理
行為 fec ret 拷貝構造函數 AR clas 釋放 AS RR 記住: 為防止資源泄漏,請使用RAII對象,它們在構造函數中獲得資源並在析構函數中釋放資源。 兩個常被使用的RAII類分別是tr1::shared_ptr和auto_ptr。前者通常是較佳選擇,因為其c
effective c++ 條款15:在資源管理類中提供對原始資源的訪問
nth invest AR and effect ptr 比較 c++ 顯示轉換 記住: APIs往往要求訪問原始資源,所以每一個RAII類應該提供一個“取得其所管理之資源”的辦法。 對原始資源的訪問可能經由顯示轉換或隱式轉換。一般而言顯示轉換比較安全,但隱式轉換對客戶比