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

(六)深入函數(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://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è)公司
国产乱码精品一区二区蜜臀| 自拍偷拍一区蜜桃视频| 日本欧美激情在线观看| 亚洲欧美一区二区粉嫩| 亚洲精品成人一区不卡| 一区二区蜜桃在线观看| 黄色录像日本黄色录像| 日韩在线一区二区视频| 亚洲精品精品一区二区| 97精品免费在线观看| 精品日韩欧美精品日韩| 午夜毛片免费在线播放| 日本岛国大片一区二区在线观看| 久久99热这里只频精品| 亚洲一区二区色黄大片| 高质量的性生活在线观看| 日本一区二区三区免费精品| 男女视频一区二区三区在线观看| 亚洲国产成人久久综合区| 亚洲熟妇av一区二区| 秒播视频午夜福利在线观看| 丁香婷婷麻豆激情综合网| 91精品国产91久久综合福利| 精品国产视频一区二区三区| 麻豆人妻少妇精品系列| 国产三级国产精品国产| 欧美国产日韩一区在线观看| 一区二区三区在线观看淫| 极品美女粉嫩啪啪高潮| 熟女中文字幕亚洲一区二区| 福利午夜福利在线观看| 久久一二三四区中文字幕| 丰满人妻视频一二三区| 农村人妻一区二区三区视频| 日韩女同性一区二区三区| 中文字幕日韩欧美资源站| 午夜激情毛片在线观看| av东京热狠狠男人的天堂| 国产夫妻一区二区三区| 亚洲综合国产一区二区| 欧洲精品久久久久久|