<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      從C過渡到C++的幾個知識點(結(jié)構(gòu)體、引用、重載運算符)

      一、結(jié)構(gòu)體和類(class

      下面一個使用結(jié)構(gòu)體類型的例子

       1 #include <iostream>
       2 using namespace std;
       3 struct Point{      //  聲明Point結(jié)構(gòu)體類型
       4     double x;    //  成員變量,沒有使用private和public時系統(tǒng)默認(rèn)為公有類型成員變量
       5     double y;
       6 };
       7 int main()
       8 {
       9     Point p;                //  定義的p在c里稱為結(jié)構(gòu)體變量
      10     p.x = 3.2;                 //  因為x是公有類型可以通過結(jié)構(gòu)體變量直接引用使用
      11     p.y = 8.9;
      12     cout << "(" << p.x << "," << p.y << ")" << endl;    // 結(jié)構(gòu)體的使用
      13     return 0;
      14 }

      類是面向?qū)ο笳Z言的重要特征,下面是一個使用類的例子

       1 #include <iostream>
       2 using namespace std;
       3 class Point           // 
       5 {private:       //私有數(shù)據(jù)成員不能在類外普通函數(shù)中直接引用使用
       6     double x;        // 私有成員變量
       7     double y;        // 私有成員變量
       8 public:        //公有數(shù)據(jù)成員或成員函數(shù)可以在類外普通函數(shù)中直接引用使用,結(jié)構(gòu)體中默認(rèn)所有成員都是公有的。
       9     setPoint(double m, double n)          // 公有成員函數(shù)
      10      {     x = m; y = n;                  // 私有成員變量x y 在同為成員的函數(shù)中出現(xiàn)
      11      } // 并且此時不需要"."作為成員連接符 因為x y 和函數(shù)setPoint  都在Point類“內(nèi)部”
      12     printPoint()                                   // 公有成員函數(shù)
      13      {    cout << "(" << x << "," << y << ")" << endl;  }  //  同上
      14 };
      15 //如果類外定義printPoint(),則函數(shù)開頭為:void Point::printPoint()
      16 int main()
      17 {
      18     Point p;  //定義的p在c++里稱為對象
      19     p.setPoint(3.2, 8.9);
      20 //  因為x是在類里聲明為privete私有類型,在這里x不能像p.x直接引用使用,而是直接供成員函數(shù)使用
      21     p.printPoint();
      22     return 0;
      23 }//上面類的使用方法同樣適用于c++里的結(jié)構(gòu)體

          c++里擴(kuò)展了結(jié)構(gòu)體的功能,使結(jié)構(gòu)體也具有類的幾乎所有特點,如可以包含成員函數(shù),構(gòu)造函數(shù)等等。類與結(jié)構(gòu)體的區(qū)別在于:在默認(rèn)狀態(tài)下(即在不聲明private和public時),結(jié)構(gòu)的所有成員均是公有的,而類的所有成員是私有的,公有的可以在其它函數(shù)中直接調(diào)用成員變量。

          在c++里之所以要保留struct,是為了與C兼容,讓c程序可以不加修改地在c++環(huán)境下使用。

            因為我們學(xué)習(xí)的算法可以只使用結(jié)構(gòu)體就可以了,所以可以在參考書中當(dāng)成類來看,但是類的繼承派生等沒有用在我們目前學(xué)習(xí)的算法里。 

      二、this指針

      它是指向本類對象(或體結(jié)構(gòu)體變量)的指針,它的值是當(dāng)前被調(diào)用的成員函數(shù)所在的對象的起始地址。*this就是this所指向的結(jié)構(gòu)體變量。return *this //返回當(dāng)前結(jié)構(gòu)體變量值 

      三、引用和指針

      int a,c;

      int &b=a; //類似指針,與指針不同點如int &b=a;&b=c;則錯,因為只能引用一次。

      聲明ba的引用 ,即ba的別名。在聲明一個引用類型變量時,必須同時使之初始化即聲明它代表哪個變量。在聲明變量 是變量 的引用后,在它們所在函數(shù)執(zhí)行期間,該引用類型變量 始終與變量a相聯(lián)系,不能再做為其它變量的引用。常用在函數(shù)形參中,常在形參前面加const表示在該函數(shù)體內(nèi)不能修改。

       

      四、運算符重載實際上是函數(shù)的重載

      C++中預(yù)定義的運算符(如>>,+,<,)的操作對象只能是基本數(shù)據(jù)類型(如:int,float),實際上,對于很多用戶自定義類型(如:結(jié)構(gòu)體)要進(jìn)行類似的運算操作時需要重載(=&有時可不重載)

      運算符重載的格式如下:

      函數(shù)類型 operator 運算符名稱(形參表列){對運算符的重載處理}

      賦值等運算符必須定義為類(或結(jié)構(gòu)體,本文提到的類與結(jié)構(gòu)體等同,對象與結(jié)構(gòu)體變量等同)的成員函數(shù)(即放在類里),<<和>>不能定義為類的成員函數(shù)(即需放在類外)。 

      對“<<”和“>>”重載的函數(shù)形式如下:

       //cin和cout分別是istream和ostream類的對象
      istream & operator >> (istream &,自定義類 &) 
      ostream & operator << (ostream &,自定義類 &)
      

       下面例子重載+、>>和<<運算符

       1 #include<iostream>
       2 using namespace std;
       3 struct Complex
       4 {
       5  double real,imag;
       6  Complex(double r=0,double i=0)  {   real=r;   imag=i;  }
       7  Complex operator + (Complex &c2);//聲明運算符的"+"函數(shù) 
       8   void display();
       9 };
      10 Complex Complex::operator+(Complex &c2)   //在結(jié)構(gòu)體外定義結(jié)構(gòu)體的成員函數(shù)用::
      11 {
      12  Complex c;
      13  c.real=real+c2.real;
      14  c.imag=imag+c2.imag;
      15  return c;
      16 }
      17 
      18 void Complex::display()
      19 { cout<<"("<<real<<","<<imag<<"i)"<<endl;}
      20 
      21 istream & operator >>(istream & input,Complex &c)  //重載>>運算符用于輸入數(shù)據(jù),因結(jié)構(gòu)體里變量是公有成員,不用聲明為友元函數(shù),可直接引用成員
      22 {input>>c.real>>c.imag; return input;}
      23 
      24 ostream & operator <<(ostream & output,Complex &c) //重載<<運算符用于輸出數(shù)據(jù) 
      26 {output<<"("<<c.real<<"+"<<c.imag<<"i)"; return output;}
      27 
      28 int main()
      29 {
      30  Complex c1(3,4),c2(5,-10),c3;
      31  c3=c1+c2;
      32  cout<<"c1=";
      33  c1.display();
      34  cout<<"c2=";
      35  c2.display();
      36  cout<<c3;   //和 c3.display();等價
      37   return 0;
      38 }

       

      posted @ 2016-05-02 17:46  子止墨  閱讀(3918)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品一区| 久久久国产成人一区二区| 天堂网av成人在线观看| 无套内谢极品少妇视频| 性色欲情网站| 久久热这里这里只有精品| 国产精品中文字幕二区| 91人妻无码成人精品一区91| 国产福利社区一区二区| 国产稚嫩高中生呻吟激情在线视频| 国产suv精品一区二区四| 奇米777四色影视在线看| 亚洲综合小综合中文字幕| 一区二区中文字幕av| 久久人与动人物a级毛片 | 成av人电影在线观看| 国产精品天干天干综合网| 成人免费无遮挡无码黄漫视频| 激情综合色综合啪啪开心| 国内自拍av在线免费| 久久影院午夜伦手机不四虎卡| 无码激情亚洲一区| 亚洲欧洲一区二区三区久久 | 国产成人8x视频一区二区| 修武县| 色伦专区97中文字幕| 日本高清免费不卡视频| 乱码午夜-极品国产内射| 蜜桃av一区二区高潮久久精品| 日韩AV高清在线看片| 性色av免费观看| 人妻中文字幕亚洲一区| 国产午夜在线观看视频播放| 国产成人无码免费视频麻豆| 亚洲精品色国语对白在线| 国产人妻人伦精品1国产丝袜| 一区二区三区黄色一级片| 秋霞电影院午夜无码免费视频| 在线一区二区中文字幕| 蜜桃av亚洲第一区二区| 久久久久无码精品国产h动漫|