青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 55  文章 - 15  trackbacks - 0
<2012年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用鏈接

留言簿

隨筆分類

隨筆檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

運算符重載的目的:使操作更明確,更方便
可以是成員函數(shù),也可以是全局函數(shù)。成員函數(shù)的好處是:返回值可以調(diào)用函數(shù)。全局函數(shù)的好處是:運算符兩邊的對象都可以進行隱式類型轉(zhuǎn)化。但是,如果定義了一個全局的運算符,將有機會覆蓋掉標準的運算。
不能重載的運算符:
1. 成員選擇operator.()。如果允許重載,就不能用普通的方法訪問成員,只能用operator->()訪問。
2. 成員指針間接引用operator.*()。
3. 不存在的用戶自定義的運算符。
ps:不能改變優(yōu)先級,也不能改變運算符的參數(shù)。否則很難記憶。
幾個比較重要的運算符:

Class Byte
{
int b;
public:
 
const Byte& operator++()// prefix ++byte
 {
    b
++;
    
return *this;
 }


 
const Byte& operator++(int)//postfix byte++
 {
    Byte before(b);
    b
++;
    
return before;
 }

}
;

/////////////
class Integer{
long i;
public:
  Integer(
long ll = 0):i(ll){}
  friend 
const Integer operator-(const Integer& left, const Integer& right);
}
;
const Integer operator-(const Integer& left, const Integer& right)
{
    
return Integer(left.i - right.i);
}
//返回值優(yōu)化,構(gòu)造一個對象并交給返回值。


operator->靈巧指針,是一個類看起來像指針 :必須返回一個對象(或?qū)ο蟮囊茫搶?象也有一個指針間接引用運算符;或者必須返回一個指針。

class Obj{
 
public:
  
void f() const {cout << "f()" << endl;}
}
;
class ObjContainer{
  vector
<Obj*> a;
  friend 
class SmartPointer;
}
;
class SmartPointer{
  ObjContainer
& oc;
  
int index;
public:
  SmartPointer(ObjContainer
& objc):oc(objc){
     index 
= 0;
   }

  Obj
* operator->()const{
     
return oc.a[index];
   }

}
;

ObjContainer oc;
SmartPointer sp(oc);
sp
->f();  

一般將智能指針嵌入它所服務(wù)的類中。

operator->*(),二元運算符,必須有一個operator(),且必須是成員函數(shù)。operator()允許里面有任意參數(shù),使得對象看起來像一個真正的函數(shù)。
class Dog{
  
public:
   
int run(int i) const{}
   
int eat(int i) const{}


typedef 
int(Dog::*PMF)(int)const;

class FunctionObject{
  Dog
* ptr;
  PMF pmem;
 
public:
  FunctionObject(Dog
* dp, PMF pmf):ptr(dp), pmem(pmf){}
  
int operator()(int i)const{
     
return (ptr->*pmem)(i);
    }

  }
;
 FunctionObject 
operator->*(PMF pmf){
    
return FunctionObject(this,pmf);//automaticlly invoke operator()
 }

}
;

int main()
{
  Dog w;
  Dog::PMF pmf 
= &Dog::run;
  (w
->*pmf)(1);
  pmf 
= &Dog::eat;
  (w
->*pmf)(2);
  
return 0;
}

operator->*返回一個FunctionObject對象,其中有對象*this,也有指向成員的指針pmem。


賦值運算符
從有到有。
MyType b;
MyType a 
= b;//a沒出現(xiàn)過,調(diào)用拷貝構(gòu)造函數(shù)
= b;//a已經(jīng)出現(xiàn),調(diào)用operator=()
因為是從一個對象賦值至已有的對象,以為著這個對象不再使用,所以要進行一些處理。并且應(yīng)該判斷是否賦值給自己。
引用計數(shù)的引入:所有的指針都指向一塊內(nèi)存,所以,增加一塊引用就應(yīng)該增加一次計數(shù)。當(dāng)計數(shù)為0時,表示沒有指針指向它,可以delete掉。
但是,如果修改了這塊內(nèi)存,意味著所有指向它的引用都被修改了,所以出現(xiàn)了寫拷貝。判斷引用計數(shù)是否為1,為1的話說明沒有其他指針指向它,可以修改。如果大于1,說明有很多指針指向它,那就重新開辟一塊內(nèi)存,將那塊內(nèi)存的內(nèi)容復(fù)制過來,再進行修改,同時,指向最初內(nèi)存的引用計數(shù)應(yīng)該減1.

自動類型轉(zhuǎn)換
轉(zhuǎn)型構(gòu)造函數(shù):必須只有一個參數(shù),隱式轉(zhuǎn)換。如果想顯式轉(zhuǎn)換,使用explicit定義拷貝構(gòu)造函數(shù)。
運算符轉(zhuǎn)換:
class Three{
   
int i;
  
public:
    Three(
int ii = 0int = 0):i(ii){}
}
;

class Four{
    
int x;
  
public:
    Four(
int xx):x(xx){}
    
operator Three()constreturn Three(x);}
}
;

void g(Three){}
int main()
{
  Four four(
1);
  g(four);
  g(
1);
}



























1
                
posted on 2012-06-01 16:48 Dino-Tech 閱讀(280) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜精彩国产免费不卡不顿大片| 亚洲欧美变态国产另类| 日韩午夜免费| 亚洲福利精品| 欧美亚洲视频| 亚洲自拍偷拍色片视频| 激情久久影院| 亚洲欧美日韩一区在线| 亚洲香蕉伊综合在人在线视看| 亚洲国产精品一区二区久| 亚洲欧美日本国产有色| 一区二区三区精品视频在线观看| 在线播放不卡| 久久高清国产| 欧美在线黄色| 国产精品香蕉在线观看| 一本色道久久| 亚洲一区二区伦理| 欧美精品啪啪| 亚洲人成77777在线观看网| 在线看无码的免费网站| 欧美激情视频网站| 一区二区三区无毛| 久久久久五月天| 免费日韩成人| 国产精品白丝av嫩草影院 | 99一区二区| 欧美不卡视频| 亚洲精品视频一区二区三区| 亚洲看片免费| 欧美日韩亚洲激情| 野花国产精品入口| 亚洲欧美高清| 国产老肥熟一区二区三区| 亚洲一区二区欧美| 久久er99精品| 影音欧美亚洲| 欧美成人一区二区三区| 亚洲欧洲久久| 亚洲免费网址| 精品不卡一区| 欧美精品久久久久久久久老牛影院 | 韩国在线一区| 免费成人在线观看视频| 亚洲人成亚洲人成在线观看| 亚洲午夜精品视频| 国产欧美一区二区精品婷婷| 久久精品一本| 亚洲国产精品综合| 午夜在线视频一区二区区别| 国模精品娜娜一二三区| 牛牛影视久久网| 亚洲一区二区黄| 欧美成年人在线观看| 一区二区三区成人| 国产亚洲欧美一级| 欧美大秀在线观看| 午夜精品久久久久久久白皮肤| 玖玖国产精品视频| 亚洲午夜影视影院在线观看| 国产视频不卡| 欧美人与禽猛交乱配视频| 午夜一区在线| 亚洲伦理在线| 榴莲视频成人在线观看| 一区二区三区导航| 在线观看精品| 国产精品久久久久一区二区三区| 久久婷婷综合激情| 亚洲欧美一区在线| 亚洲日韩欧美视频一区| 久久亚洲综合色| 亚洲欧美国产高清| 日韩网站在线观看| 精品成人乱色一区二区| 国产精品久久999| 欧美成人在线免费观看| 欧美一级欧美一级在线播放| 亚洲美女91| 美日韩精品免费| 欧美亚一区二区| 国产真实乱子伦精品视频| 国产一二三精品| 欧美大片va欧美在线播放| 香蕉久久国产| 夜夜嗨av一区二区三区四季av | 一区二区三区国产在线| 黑人巨大精品欧美一区二区| 国产精品嫩草久久久久| 欧美美女bbbb| 欧美成人视屏| 欧美sm重口味系列视频在线观看| 欧美一级久久久久久久大片| 亚洲视频在线观看一区| 亚洲精品一二| 亚洲日韩视频| 亚洲欧洲一区二区三区| 亚洲第一二三四五区| 久久久久国色av免费看影院| 香蕉久久夜色精品国产使用方法| 中文精品视频一区二区在线观看| 国产精品久久久久三级| 亚洲另类在线一区| 久久一区视频| 欧美v国产在线一区二区三区| 亚洲国产免费看| 国产伦精品一区二区三区| 国产精品久久久久久久久久免费 | 一色屋精品视频免费看| 国产一区二区0| 国产一区二区黄| 国产在线观看精品一区二区三区| 国产亚洲欧美在线| 国内成+人亚洲+欧美+综合在线| 国产精品一区=区| 国产视频在线观看一区二区| 国产日韩欧美另类| 好吊视频一区二区三区四区| 国产一区二区高清| 亚洲成色777777在线观看影院| 影音欧美亚洲| 免费观看30秒视频久久| 极品少妇一区二区| 欧美日韩亚洲一区二区| 国产精品高潮呻吟视频| 国产日韩欧美视频| 在线日韩欧美视频| 99精品欧美一区二区三区| 亚洲特色特黄| 久久精品视频在线播放| 欧美成人按摩| 亚洲人线精品午夜| 亚洲一区欧美一区| 久久米奇亚洲| 欧美日韩另类丝袜其他| 国产一区美女| 亚洲伦理在线| 欧美影院成人| 最新国产成人在线观看| 亚洲午夜在线观看视频在线| 久久精品一区四区| 欧美日本网站| 国内精品**久久毛片app| 亚洲精品在线观看免费| 欧美在线www| 亚洲国产黄色| 欧美在线观看视频| 欧美日韩三级| 精品91久久久久| 亚洲综合好骚| 欧美国产综合| 欧美亚洲网站| 欧美日韩国产美女| 在线精品高清中文字幕| 亚洲欧美日韩在线一区| 亚洲国产成人tv| 欧美一区二区国产| 欧美视频福利| 亚洲高清资源| 久久精品在线视频| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 亚洲综合首页| 亚洲国产成人精品视频| 欧美影院久久久| 国产精品私人影院| 99一区二区| 亚洲国产二区| 一区二区三区四区在线| 亚洲视频成人| 欧美va亚洲va国产综合| 国产一区二区三区的电影| 亚洲图中文字幕| 亚洲人成绝费网站色www| 久久午夜精品| 狠狠色狠狠色综合日日五| 欧美一区二区三区免费视频| 一本色道久久综合精品竹菊| 欧美成人午夜视频| 亚洲福利专区| 美国成人直播| 久久久久国产精品麻豆ai换脸| 国产欧美一区二区三区国产幕精品 | 久久视频免费观看| 亚洲免费网址| 国产精品网曝门| 亚洲专区在线视频| 亚洲少妇最新在线视频| 欧美手机在线视频| 亚洲视频综合| 宅男噜噜噜66一区二区| 欧美视频精品在线| 亚洲一区在线播放| 亚洲视频精品| 国产欧美日韩激情| 久久久www免费人成黑人精品| 亚洲欧美电影院| 韩国av一区二区| 欧美jizz19性欧美| 欧美激情精品久久久久| 一本一道久久综合狠狠老精东影业|