麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C語言的結構和C++類的異同

2019-11-17 05:10:06
字體:
來源:轉載
供稿:網友

  學過C++的人一定知道類是什么,精通C的人也一定知道什么是結構,作為一名C語言的初學者的我,不僅產生了一些疑問:什么叫結構,什么是類?有人說他們長的很像,為什么這么說呢?他們之間有什么聯系呢?但他們究竟一個叫結構另一個叫類,他們又有什么區別呢?帶著這些問題,我淺淺的了解了一下C語言的結構和C++的類。

  首先我們要知道什么是結構什么是類:

  結構是用同一個名字引用的相關的集合(或稱聚合題),它是用其他類型的對象構造出來的派生數據類型。

  說到派生,其實也不難理解:

  結構中可包含多種不同數據類型的變量,如:int型的,float型的,char型的,long型的,甚至數組合指針,以及自引用指針等等,結構中包含有這些數據類型的變量,所以說結構是派生而來。

  結構實例:

strUCt player/*要害字struct定義一個結構*/
{      
 int number;/*聲明一個int型的number*/
 char *name;
 char *nationality;
}
  在struct后邊的player就變成了像int,一樣的聲明符。

main()
{
 struct player A;/*聲明一個player型的結構A*/
 struct player *aptr;/*聲明一個指針*/
 ......
}
  數組與結構一瞥:

 相同點 特點數組都是聚合體數組種植包含相同的數據類型的元素,每個元素都有在數組下的一個數標,如:s[n] 結構  可包括多種不同數據類型的變量。(本篇大部分都在介紹結構,在這里就不多說了)枚舉 利用要害字enum聲明枚舉,一般用來聲明元素有規律的對象體,例如:月份,日期,星期等。 聯合  利用要害字union聲明聯合,聯合的每個成員的地址就是聯合對象的地址,之所以他們公用一個地址,所以聯合又叫共同體,也因此只有最后賦給聯合成員的值才有效。
符號名稱讀法用法. 結構成員運算符結構A的成員numberA.number -> 結構指針運算符aptr指向結構的成員aptr->number
  結構初始化:

  結構初始化有兩種:

  1. 用初始化列表初始化,即在聲明結構變量時,在變量明后用等號連接在花括號中的初始化值列表來初始化該結構變量,初始化值用逗號分開。例如:
struct player A={5,“Xiaogang”,“China”};

  2. 利用訪問結構成員初始化。

  例如:

A.number=5;
A.name="Xiaogang"
A.nationality="China";/*效果于1定義得一樣*/

aptr ->number=5;
aptr ->name="Xiaogang";
aptr ->nationality="China";/*效果于1定義得一樣*/
  要害字typedef:

  typedef 可用來建立已定義好的數據類型的別名。例如:

  typedef struct player Player;

  定義型的類型名Player,它是類型struct player的別名。

  *結構的重要性是不言而喻的,他和指針可用來構造更復雜的數據結構,例如:鏈表、隊列、堆棧和樹。

(在這里我就不多說了!)

  類定義:

  在解釋類之前,我們必須了解對象:

  稱現實世界中客觀存在的事物為對象,只要是客觀世界你能想得到的實物、抽象的物都可以是一個對象;例如:整數是一個對象,汽車是對象,人也是對象......

  C++可使用對象名、屬性和操作三要數來描述對象,我們用對象結構圖來描述一個對象:

C語言的結構和C++類的異同(圖一)

  這里有一個人叫小剛,我們用對象結構圖來描述他:

C語言的結構和C++類的異同(圖二)

  清楚什么是對象了,我們可以介紹類了。 更多文章 更多內容請看C/C++技術專題  C/C++進階技術文檔專題,或

  像構造枚舉和結構一樣,類也是一種用戶自己構造的數據類型,類是在C++下的,所以類遵循C++的規定。C++中聲明的一般形式為:

class 類名 {
            私有數據和函數   /*假如沒有使用要害字,則所有成員默認PRivate:為                         private權限*/

            私有數據和函數
     public:
            共有數據和函數
     protected:
            保護數據和函數
};
  私有(Private)成員,只有在類中說明的函數才能訪問該類的私有成員,而在該類外的函數不可以訪問私有成員;公有(Public)成員,類外面也可訪問公有成員,成為該類的接口;還有一種是保護(Protected)成員,這種成員只有該類的派生類可以訪問,其余的在這個類外不能訪問。

  從上圖可以看出,類與結構既有相似又有不同,class似與struct一樣是聲明一個聚合體,而且類也有數據成員,但是類聲明的對象的初始化則與結構大相徑庭,(對象的初始化使用構造函數來完成的,構造函數將在后邊介紹)結構中沒有像類一樣的如public這樣的權限,結構中是不可以有函數的,而類中可以存在函數。
構造函數:

  *“構造函數”是一個非凡的成員函數,不要把它理解為構造一個函數,在c++中構造函數一般與類的名字相同。


class circle {
private:
    int r;         /*一個圓的搬進是圓的數據成員(圓性質)*/
public:
    circle(int i);
};                /*定義一個圓類*/
include <iostream.h>
circle::circle(int i){      /*"::"是類運算符,只要記住‘.’和‘->’是用于對象的,"::"                   是用于類的成員的*/
 r=i;
}                 /*定義構造函數*/

main(){
 circle(6);           /*初始化了r=6*/
}
  此上為構造函數簡單用法。既然說到了構造函數,也就跑不了析構函數。在對象消失時,析構函數將釋放由構造函數分配的內存。一般用于類通明的函數名,沒有參數,并在函數前面加上“~”號。如:~circle();

  從已有的對象類型出發建立一種新的對象類型,使它繼續原對象的特點和功能,這種思想是面向對象設計的主要貢獻。

  從一個或多個以前定義的類產生型類的過程稱為派生,這個新類又成為派生類。類的繼續是指新類從基類那里得到的特征,也就是繼續基類的數據和函數。繼續和派生類不難理解,在我們生活中繼續的例子不勝枚舉。

  如:中學生、大學生繼續學生的性質;輸入輸出設備繼續輸入設備和輸出設備的性質和特點。

C語言的結構和C++類的異同(圖三)

  可見,類要比結構功能強,性質多,類中存在函數,可以看作是一個活生生的生物,它可以做一系列動作,甚至可以繼續;而結構似乎是一個“筆記本”,她只記錄了物體的一些性質。我作為一個初學者,是以結構為引子,了解了一些c++的類,涉入不深,還請高手多提建議! 更多文章 更多內容請看C/C++技術專題  C/C++進階技術文檔專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品偷拍久久 | 黄色视屏免费在线观看 | 亚洲成人久久精品 | 欧美精品18 | 国产精品免费一区二区 | 欧美日韩亚洲在线观看 | 国产羞羞视频在线观看 | 韩日黄色片 | 亚洲网站免费观看 | 日本精品一二区 | 久久福利在线 | 牛牛热这里只有精品 | 国产精品成人一区二区三区电影毛片 | 久久久视频免费观看 | 亚洲网站在线播放 | 青青青在线免费 | 亚洲日本韩国在线观看 | 日韩美香港a一级毛片 | 免费人成在线播放 | 伦理三区| 欧产日产国产精品v | 免费观看欧美一级片 | 国产成人自拍小视频 | 999插插插 | 日韩精品免费看 | 成人免费激情视频 | 国产无遮挡一区二区三区毛片日本 | 国产精品一区免费在线观看 | 亚洲精品一区二区三区大胸 | 麻豆传传媒久久久爱 | 欧美中文字幕一区二区 | 娇喘视频在线观看 | 男男啪羞羞视频网站 | 欧美一级毛片欧美一级成人毛片 | 久久精品视频亚洲 | 毛片免费看网站 | 久国产精品视频 | 欧美淫视频| 成人永久免费视频 | 亚洲午夜天堂吃瓜在线 | 看免费的毛片 |