欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

(六)深入函數(shù)-創(chuàng)新互聯(lián)

普通函數(shù)的重載(六)深入函數(shù)
跟java沒區(qū)別 都是同樣的方法名,不同的參數(shù)。

缺省參數(shù)的函數(shù)

成都創(chuàng)新互聯(lián)專注于孝昌企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站開發(fā)。孝昌網(wǎng)站建設(shè)公司,為孝昌等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
#include <iostream>
using namespace std;
class A{
public:
  void set(int =30,int=5);
  void count(bool=false);
private:
  int w;
  int h;
};
void A::set(int width,int height){
  w=width;
  h=height;
}
void A::count(bool val){
  if(val==true){
    cout<<"val的值為真時(shí):"<<w*h<<endl;
  }else{
    cout<<"val的值為假時(shí):"<<w*h/2<<endl;
  }
}
int main(){
  A a;
  a.set();
  a.count();
}
c++中可以寫這種缺省的函數(shù),java中應(yīng)該是不可以,我個(gè)人沒寫過,也沒有見別人寫過,時(shí)間有限就不寫demo測試了,有興趣的可以試下。
不過似乎c++中這種默認(rèn)的方法必須 不是內(nèi)聯(lián)函數(shù)才行,也就是聲明跟方法分開寫。

成員變量初始化

c++中有一種特殊類的成員變量初始化的寫法
例:
class rectangle{
public:
  rectangle():length(3),width(5){}
private:
  const int length;
  const int width;
}
在構(gòu)造函數(shù)的右邊有個(gè)冒號(hào) (:),然后是成員變量的名稱和一對(duì)小括號(hào)(),小括號(hào)中是要初始化的值或者表達(dá)式,如果對(duì)多個(gè)成員進(jìn)行初始化,那么就要用逗號(hào)將它們隔開,最后是一對(duì)大
括號(hào){},大括號(hào)中就是函數(shù)所要執(zhí)行的功能。
這種方式是對(duì)成員變量的初始化,而 rectangle(){length=3;}這種方式是對(duì)成員進(jìn)行賦值,當(dāng)成員有const修飾符 是常量時(shí),賦值的方式就會(huì)報(bào)錯(cuò)。
對(duì)于像常量和引用只能被初始化,不能被賦值.我們最好在構(gòu)造函數(shù)的函數(shù)頭中對(duì)常量和引用進(jìn)行初始化。

復(fù)制構(gòu)造函數(shù)

class A{
public :
  A(){}
  A(A&one){n=one.n;m=one.m;}//這是復(fù)制構(gòu)造函數(shù),系統(tǒng)默認(rèn)就有的,我們可以復(fù)寫也可以不管,在引用一節(jié)有關(guān)于這個(gè)的測試。
  A(int i,int j){n=i;m=j;}
  void print(){
    cout<<n<<m;
  }
private:
  int n;
  int m;
}
int main(){
  A a(2,4);
  a.print();
  cout<<" ";
  A b(a);
  return 0;
}

構(gòu)造函數(shù)與new運(yùn)算符

在c++中創(chuàng)建實(shí)力對(duì)象,是通過指針來引向內(nèi)存空間的。
A *a;
a=new A;
a->set(3,4);
而java中 是 A a=new A();

explicit關(guān)鍵字

class A{
public:
  explicit A(int x){i=x;cout<<"構(gòu)造函數(shù)執(zhí)行!"<<i<<endl;}
  ~A(){cout<<"析構(gòu)函數(shù)執(zhí)行!"<<i<<endl;}
  void get(){cout<<i<<endl;}
private:
  int i;
};
int main(){
  A a(99);
  a.get();
  a=1000; //對(duì)于c++來說 這句話相當(dāng)于 a=A(1000);會(huì)自動(dòng)調(diào)用默認(rèn)構(gòu)造函數(shù),當(dāng)加上explicit關(guān)鍵字時(shí),就不會(huì)進(jìn)行隱式轉(zhuǎn)換了。
  return;
}

復(fù)制構(gòu)造函數(shù)

編譯器提供了默認(rèn)構(gòu)造函數(shù)和析構(gòu)函數(shù),同樣也提供了復(fù)制構(gòu)造函數(shù),編譯器提供的默認(rèn)復(fù)制構(gòu)造函數(shù)只是把傳遞進(jìn)來的對(duì)象的每個(gè)成員變量復(fù)制到新對(duì)象的成員變量中去,然后兩個(gè)對(duì)象中
的變量均指向存放類成員變量的那塊內(nèi)存區(qū)域.加入該變量不是指針變量一般不會(huì)立即出錯(cuò),加入該變量是指針變量,如圖:(圖片插入總失敗 我就簡單的表示下吧)

  對(duì)象a            -->堆<--      復(fù)制的對(duì)象b
  指針變量x            6        指針成員變量x

現(xiàn)在對(duì)象a 有一個(gè)指針成員變量x,它指向堆中存放6的那塊內(nèi)存區(qū)域,我們將對(duì)象a復(fù)制到對(duì)象b,如: A b=(a); 由于要復(fù)制對(duì)象,因此自動(dòng)調(diào)用默認(rèn)復(fù)制構(gòu)造函數(shù),調(diào)用的過程為為:
首先將對(duì)象a作為參數(shù)傳遞到默認(rèn)復(fù)制構(gòu)造函數(shù)中,然后將對(duì)象a的指針成員變量x復(fù)制到對(duì)象b中,這樣兩個(gè)對(duì)象的指針x現(xiàn)在都指向同一內(nèi)存區(qū)域。
這樣當(dāng)這兩個(gè)對(duì)象中的任何一個(gè)超出作用域時(shí),都會(huì)出現(xiàn)致命的錯(cuò)誤。比如說我們將對(duì)象a刪除,那么析構(gòu)函數(shù)會(huì)自動(dòng)釋放堆中存放6的那塊內(nèi)存空間,而對(duì)象b的指針變量x扔指向該空間,
由于該空間已經(jīng)不在,那么對(duì)象b的指針變量x現(xiàn)在就變成了一個(gè)迷途指針,該程序面臨崩潰的邊緣。
為了解決淺層復(fù)制導(dǎo)致的迷途指針問題,我們必須創(chuàng)建自己的復(fù)制構(gòu)造函數(shù),并且在函數(shù)里為我們的成員變量分配內(nèi)存,這樣,在分配完內(nèi)存后,舊對(duì)象的成員變量就可以復(fù)制到新的內(nèi)存區(qū)域
中,兩個(gè)對(duì)象的成員變量都各自擁有自己的內(nèi)存區(qū)域,一個(gè)對(duì)象在析構(gòu)后不再會(huì)影響到另一個(gè),我們把這種復(fù)制方式叫做深層復(fù)制。例:
class A{
public:
  A(){x=new int;*x=5;}
  ~A(){delete x;x=NULL;}
  //定義一個(gè)深層的復(fù)制構(gòu)造函數(shù)
  A(const A&a){//因?yàn)樵谶@個(gè)函數(shù)體中不會(huì)修改別名a所引用的原始對(duì)象的值.所以將別名a定義為別名常量。這樣加入我們?cè)噲D修改傳遞進(jìn)來的對(duì)象,程序就會(huì)報(bào)錯(cuò)。
    cout<<"復(fù)制構(gòu)造函數(shù)執(zhí)行... "<<endl;
    x=new int;//用復(fù)制構(gòu)造函數(shù)創(chuàng)建的新對(duì)象的指針成員x來指向它。這樣兩個(gè)對(duì)象的x指針都指向了不同的內(nèi)存空間。
    *x=*(a.x);//先通過對(duì)象a調(diào)用x指針成員后,再通過"*"讀取x指針指向的空間處的值。
  }
  void print()const{cout<<*x<<endl;}
  void set(int i){*x=i;}
private:
  int *x;
}

網(wǎng)頁題目:(六)深入函數(shù)-創(chuàng)新互聯(lián)
URL地址:http://www.aaarwkj.com/article46/jeoeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、電子商務(wù)、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
日韩亚洲欧美另类精品| 欧美一区二区久久综合| 国内自拍一区二区三区| 亚洲高清中文字幕一区二三区| 国产91在线视频播放| 在线观看免费在线观看免费 | 欧美v日韩v亚洲综合国产高清 | 国产欧美日韩精品三级| 亚洲av日韩av在线不卡一区| 亚洲综合欧美日韩一区| 国产国语激情对白在线| 99久热在线精品视频| 在线日韩中文字幕二区| 久久精品一区二区熟女| 国产亚洲一区二区视频| 精品三级一区二区三区| 国产精品毛片在线看不卡| 超碰免费在线公开97| 色哟哟在线观看国产精品| 亚洲精品一区av在线观看| 午夜福利片在线观看视频| 国产黄色片网站在线观看| 精品啪在线观看国产熟女| 黑人巨大精品欧美黑寡妇| 少妇的诱惑免费在线播放| 黑人爆操中国女孩在线观看| 日韩欧美国产精品福利| 97超碰97资源在线| 青青草原在线视频一区| 国产成人亚洲精品专区高清| 亚洲一本一道久久香蕉| 亚洲精品黄色片中文字幕| 国产av一区二区三区高潮蜜| 91亚洲蜜臀精品国产| 亚洲欧洲日本一区精品| 久久亚洲av麻衣北条麻妃| 丝袜美腿诱惑国产在线| 日本一区二区不卡视频在线播放| 免费午夜福利一区二区| 四虎久久久最新网址| 伊人久久综在合线亚洲|