中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

類與對象

發布時間:2020-05-29 15:50:50 來源:網絡 閱讀:1072 作者:匯天下豪杰 欄目:編程語言

1、C++語言是基于面向對象的,所以尤其四大特性:

  抽象、封裝、繼承、多態。、

  抽象:對客觀世界,現實實體的一類定義,找到共性;

  封裝:將數據及對數據上的操作捆綁起來;

  繼承:子子孫孫無窮匱也;

  多態:主要體現在繼承,同一事物的不同表現形式。

2、C++中的類:

  與C語言中的結構體類似:

struct STU{
  char name[15];
  char id[9];
  double score;
};

  以上就可以體現封裝,將不同的數據類型封裝起來,只是沒有方法而已;

  新的數據類型為:struct STU  a(結構體變量)。

  通過類比,可以知道,在C++中通過class定義新的數據類型,

class Test{
public:
  void setData(int x){
   data;
   }
private:  
  int data;
};

  通過類將其封裝起來,新的數據類型為Test  a(對象)。

  只不過在C語言中叫做結構體,在C++中叫就做類,是一種對事物共性的抽象,

   比C多了對數據上的操作。

3、對象:

  在C中將結構體定義的叫做,結構體變量,在C++中將類定義的叫做,對象。

  創建對象兩種方式:

  靜態創建:Test a; 創建后將對象壓棧;

  動態創建:Test *a = new Test;  其申請的空間在堆上,必須通過delete釋放。

4、訪問限定符:

  public:公有    protected: 保護    private:私有;

  C++中,通過對象只能訪問一個類的public,   對protected和private修飾的通過對象不能調用。

5、深入理解類與對象:

  當我們定義一個類的時候,相當于規劃了一幅藍圖,沒有實例化時,是沒有空間的,通過類名.data是錯誤的。

  實例化:Test t1();    錯  這個不會實例化對象t1,因為這是函數聲明,t1是函數名稱,無參,返回值為Test類型;

  Test t2;     對       無參的初始化

  Test t3(10);    對       含有一個參數的初始化


6、成員方法的實現:

  可以在類內直接定義;

  也可以在類內聲明,類外定義,加上作用域限定符,

int Test::getData(){
  return data; 
}

  加上::這個之后表明getData是Test的成員函數。

7、C++重載

  C語言為什么不能重載呢?  從匯編層面可以知道,

void fun();                          
int fun(int a);
double fun(double a, double b)

  以上三個函數在C角度看匯編都是fun;名字都相同;

  從C++的角度看,其匯編層面的函數名字為:fun funi fundd,是不一樣的,所以C++有函數的重載。

  重載:函數名字相同,只與參數列表有關,與返回值無關。

  在C++中對重載函數使用extern "C"就可以理解了,

  extern "C":將當前函數(C++寫的),當做C編譯,而C編譯只看函數名稱,所以多個重載函數只能出現一次extern “C”!

  要是出現兩個,就會造成函數名相同,錯誤。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉禾县| 莱阳市| 东乡县| 台中县| 孙吴县| 双辽市| 崇文区| 宜川县| 大渡口区| 荔浦县| 涿州市| 乌兰县| 防城港市| 磴口县| 从化市| 抚顺市| 治县。| 罗甸县| 灵寿县| 汕头市| 仁怀市| 新巴尔虎右旗| 资中县| 青铜峡市| 米泉市| 若羌县| 维西| 台南市| 贵德县| 水富县| 柘城县| 大石桥市| 香港| 广安市| 金乡县| 云安县| 昭觉县| 浦东新区| 新平| 桦南县| 寻乌县|