中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

java 賦值運算符、拷貝初始化和this指針
來源:易賢網 閱讀:1628 次 日期:2014-12-02 15:19:46
溫馨提示:易賢網小編為您整理了“java 賦值運算符、拷貝初始化和this指針”,方便廣大網友查閱!

1)首先區別什么是賦值,什么是初始化。

2)程序中重載采用了引用傳遞,原因:①眾所周知,用值傳遞的參數將在要傳遞的函數內產生一個副本,沒有例外。如果這個對象很大,則副本就會浪費汗多空間。②在某些情況下可能想記錄對象的數目。如果編譯器在使用賦值運算符時,每次產生一個額外的對象,這樣就可能見到比醫療多得多的對象。而引用傳遞有助于避免創建過多的對象。

3)return alpha(data); 返回值是重載函數所在的對象的一個副本,而不是同一個對象。返回的值可使它將運算符=串聯起來:a3=a2=a1;

4) 然而alpha operator = (alpha& a)中值的返回與值的參數一樣的缺點:浪費內存空間。但是使用引用來返回函數的值如alpha& operator = (alpha& a) 這樣行嗎?

回答是不行的:在函數內部創建的非static的局部變量,在函數返回時即被銷毀,引用所返回的值,僅僅是實際希望返回值得地址,是沒有意義的,甚至會出現嚴重錯誤。(在這里我們可以用this指針解決這個問題,后文會解釋)

注意:賦值運算符是唯一一個不能繼承的運算符。如果在基類重載了賦值運算符,那么在任何派生類中都不能再重載同一函數。

代碼如下:

#include<iostream>

using namespace std;

class alpha

{

public:

alpha():data(0) {} //沒有參數的構造函數

alpha(int d):data(d) {} //一個參數的構造函數

void diplay() //顯示數據

{

cout<<data<<endl;

}

alpha(alpha& a) //重載拷貝構造函數

{

data=a.data;

cout<<"copy constructor invoked! "<<endl;

}

alpha operator = (alpha& a) //重載賦值運算符

{

data=a.data;

cout<<"assignment operator invoked! "<<endl;

return alpha(data); //單參數的構造函數

}

private:

int data;

};

int main()

{

alpha a1(32);

alpha a2; //無參數構造函數

a2=a1; //賦值運算符

a2.diplay();

alpha a3=a1; //拷貝構造函數

a3.diplay();

alpha a4(a1); //拷貝構造函數

a4.diplay();

return 0;

}

.看函數的幾種情況

1)函數參數

view sourceprint?void func(alpha); //以值傳遞對象

func(a1); //函數調用

這時拷貝構造函數將會被調用來創建一個對象a1的副本,并將副本交給函數func()操作。(當然引用或者指針就不會調用拷貝構造函數)

2)函數返回值

view sourceprint?alpha func() //函數聲明

a2=func() //函數調用

在這里:首先,程序調用拷貝構造函數來穿件一個func()返回值的副本;

然后,這個值再被賦給a2(調用賦值運算符)。

3)拷貝構造函數為alpha(alpha& a) ,為什么不是alpha(alpha a)的形式?

答:拷貝構造函數必須使用引用,否則會報告內存溢出。(因為如果參數用值來傳遞,就需要創建一個該值的副本。如何創建副本呢?使用拷貝構造函數,但是原函數本來就是要定義拷貝構造函數,這樣不斷調用自己你說會有什么結果!~)

二、this指針

每一個對象的成員函數都可以訪問一種神奇的指針,即指向該對象本身的this指針,因而在任何對象中都可找到所屬對象的自身地址。

代碼如下:

#include<iostream>

using namespace std;

class alpha

{

public:

alpha():data(0) {}

alpha(int d):data(d) {}

void display()

{

cout<<data<<endl

<<this->data<<endl;

}

//alpha operator = (alpha& a) //重載賦值運算符

//{

// data=a.data;

// cout<<"assignment operator invoked! "<<endl;

// return alpha(data); //單參數的構造函數

//}

alpha& operator = (alpha& a) //重載賦值運算符

{

data=a.data;

cout<<"assignment operator invoked! "<<endl;

return *this; //通過this指針返回值

}

private:

int data;

};

int main()

{

alpha a1(37);

a1.display(); //直接輸出和this->data的輸出結果是一樣的

alpha a2,a3;

a3=a2=a1; //調用賦值運算符

cout<<"a2=";a2.display();

cout<<"a3=";a3.display();

return 0;

}

注意實例中的:使用this指針返回值。(從成員函數和重載運算符返回值,this指針是一個更實用的用法)

1)this指針指向的是該成員函數所屬的對象,所以*this就是這個對象本身。通常實用引用和this指針從重載賦值運算符返回數據,從而避免創建額外的對象。

2)必須注意:this指針在靜態成員函數中是無效的,因為靜態成員函數不屬于任何特定的對象。

三、dynamic_cast和typeid

這兩個功能通常使用在有很多類都由一個基類派生的情況下。為了使動態類型轉換能夠工作,基類必須是多態的(也就是說至少包含一個虛函數)。

1.dynamic_cast可以改變指針類型

代碼如下:

#include<iostream>

#include<typeinfo>

using namespace std;

class Base

{

public:

Base() {}

virtual void vertfunc() //要想用dynamic_cast,基類必須是多態類型

{}

Base(int b):ba(b){}

void show()

{

cout<<"Base: ba="<<ba<<endl;

}

protected:

int ba;

};

class derv1:public Base

{};

class derv2:public Base

{

public:

derv2():Base() {}

derv2(int b,int d):Base(b),da(d) {}

void show()

{

cout<<"derv2: ba="<<ba<<" da="<<da<<endl;

}

private:

int da;

};

bool isDerv1(Base* pUnknown)

{

derv1* pderv1;

if (pderv1=dynamic_cast<derv1*>(pUnknown))

return true;

else

return false;

}

int main()

{

derv1* d1=new derv1;

derv2* d2=new derv2;

if (isDerv1(d1))

cout<<"d1是類derv1的一個對象"<<endl;

else

cout<<"d1不是類derv1的一個對象"<<endl;

if (isDerv1(d2))

cout<<"d2是類derv1的一個對象"<<endl;

else

cout<<"d2不是類derv1的一個對象"<<endl;

Base* pbase=new Base(10);

derv2* pderv=new derv2(22,33);

pbase->show();pbase=dynamic_cast<Base*>(pderv); pbase->show(); //派生類到基類

pbase=new derv2(34,32);

pderv->show(); pderv=dynamic_cast<derv2*>(pbase); pderv->show(); //基類到派生類

return 0;

}

更多信息請查看IT技術專欄

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲一区观看| 国产久一道中文一区| 欧美专区在线播放| 欧美日韩国产成人在线观看| 亚洲激情在线观看| 欧美大胆成人| 亚洲一区二区三区777| 国产精品美女久久久免费| 亚洲美女黄网| 国产欧美日韩综合一区在线观看 | 欧美国产在线观看| 亚洲免费电影在线观看| 国产精品国产三级国产aⅴ浪潮| 亚洲婷婷综合色高清在线| 亚洲欧洲午夜| 亚洲区在线播放| 麻豆av一区二区三区| 国产午夜精品一区理论片飘花| 亚洲乱码国产乱码精品精98午夜| 欧美在线不卡| 欧美性大战久久久久| 亚洲精品永久免费| 欧美成人视屏| 在线免费观看欧美| 久久国产福利国产秒拍| 国产精品一区久久久| 亚洲免费久久| 欧美日韩你懂的| 99成人在线| 欧美日韩成人在线播放| 亚洲精品一区二区三区av| 久久综合狠狠综合久久综合88 | 久久成人久久爱| 国产精品久久久久久久久久ktv| aa日韩免费精品视频一| 欧美日韩国产91| 国产精品美女久久久浪潮软件| 亚洲欧美不卡| 亚洲影院高清在线| 99在线|亚洲一区二区| 黑人极品videos精品欧美裸| 欧美系列一区| 欧美日本高清| 欧美成人精品在线播放| 久久久久综合网| 久久精品主播| 久久福利一区| 欧美有码在线视频| 亚洲综合大片69999| 快she精品国产999| 久久不射2019中文字幕| 亚洲伊人观看| 亚洲欧美一区二区三区久久| 一区二区三区高清在线观看| 亚洲乱码国产乱码精品精| 亚洲欧洲在线免费| 亚洲激情专区| 亚洲三级影片| 亚洲日本欧美天堂| 99精品视频网| 亚洲天堂黄色| 一区二区高清视频| 欧美激情精品久久久久久大尺度| 国产精品日韩高清| 蜜桃av综合| 亚洲麻豆av| 国产精品萝li| 久久视频在线免费观看| 日韩视频在线观看一区二区| 国产精品萝li| 欧美成人午夜影院| 中文网丁香综合网| 影音先锋久久资源网| 欧美美女bb生活片| 久久午夜精品一区二区| 亚洲一区在线免费观看| 在线免费观看视频一区| 国产精品国产馆在线真实露脸 | 99成人在线| 亚洲欧美不卡| 久久人91精品久久久久久不卡| 久久综合影音| 欧美日韩一区二区三| 国产精品日韩一区二区| 国内外成人在线视频| 亚洲国产导航| 亚洲无限av看| 久久精品国产久精国产一老狼| 美日韩精品免费| 国产精品国产一区二区| 激情小说另类小说亚洲欧美| 亚洲精选在线| 国产精品成人一区| 国产日韩精品久久| 亚洲激情一区二区| 亚洲欧美日韩专区| 欧美华人在线视频| 国产精品中文字幕欧美| 亚洲国产精品传媒在线观看 | 一区二区高清视频在线观看| 午夜精品一区二区三区在线视 | 久久久久久久久综合| 国产亚洲精品自拍| 免费成人激情视频| 麻豆国产va免费精品高清在线| 欧美一区二区精品| 欧美在线影院在线视频| 久久成人久久爱| 久热精品视频在线观看一区| 乱码第一页成人| 欧美精品三级日韩久久| 欧美伦理影院| 国产精品第三页| 国产精品乱子久久久久| 国产精品国产成人国产三级| 国产精品热久久久久夜色精品三区 | 欧美日韩 国产精品| 欧美精品福利在线| 亚洲天堂av图片| 欧美大片在线看| 亚洲第一区在线| 久久久久久久久久久久久女国产乱| 欧美日韩三级电影在线| 亚洲精品一区二区三区99| 免费观看日韩| 亚洲国产三级在线| 美女诱惑黄网站一区| 韩国av一区二区三区四区| 午夜精品国产| 国产精品一国产精品k频道56| 一区二区91| 欧美手机在线| 欧美大片一区| 在线精品在线| 久久午夜电影| 亚洲国产精品热久久| 欧美成人第一页| 亚洲日本aⅴ片在线观看香蕉| 美女999久久久精品视频| 亚洲高清视频中文字幕| 裸体女人亚洲精品一区| 亚洲国产天堂久久综合| 欧美精品成人91久久久久久久| 亚洲三级免费观看| 欧美日韩免费观看一区二区三区| 99日韩精品| 国产精品视频久久一区| 欧美在线观看视频在线| 亚洲欧洲在线观看| 一二三区精品| 欧美大片在线观看| 在线欧美不卡| 久久精品卡一| 国产精品亚洲综合天堂夜夜| 亚洲欧洲一区二区天堂久久| 欧美亚洲尤物久久| 国产精品日韩欧美一区二区| aa亚洲婷婷| 欧美日韩一二区| 亚洲国产精选| 久久久精品国产免费观看同学| 欧美亚韩一区| 一本一本a久久| 欧美日韩视频在线一区二区观看视频| 亚洲福利视频一区| 久久视频一区二区| 狠狠久久亚洲欧美专区| 亚洲免费在线| 午夜精品成人在线视频| 欧美日韩一区二区三| 久久久夜夜夜| 亚洲欧美www| 亚洲最新色图| 亚洲第一精品夜夜躁人人躁| 国产精品久久中文| 免费观看30秒视频久久| 性久久久久久久久久久久| 91久久久久久国产精品| 国产区二精品视| 欧美日韩一区二区三区视频| 久久久久久久欧美精品| 亚洲一区二区免费| 亚洲精品乱码久久久久久久久| 国产精品自拍一区| 欧美四级在线观看| 国产主播一区二区| 欧美偷拍另类| 欧美成人国产一区二区| 欧美在线黄色| 亚洲午夜精品福利| 亚洲免费成人av电影| 狠狠色狠狠色综合日日91app| 国产精品igao视频网网址不卡日韩| 久久综合中文色婷婷| 性做久久久久久久久| 亚洲伊人第一页| 一区二区欧美视频| 一本久道综合久久精品| 亚洲风情亚aⅴ在线发布| 国产麻豆精品在线观看|