類與結構體
目錄
類與結構體的異同
C++中增加了class型別後,仍保留了結構體型別(struct),而且把他的功能也擴充套件了。C++不是簡單的繼承了C的結構體,而是使它也有了類的特點,以便於用於物件導向程式設計。用struct宣告的結構體型別實際上也就是類型別。
struct宣告的類和class宣告的類是有區別的。用struct宣告的類,如果對其成員不做private或public的宣告,系統將預設為public(公用的)。而class定義的類,如果不做private或public宣告,系統將預設其成員為private(私有的),在需要時也可以自己用顯式宣告改變。如果希望成員是公有的,使用struct比較方便,如果希望部分成員是私有的,宜用class。建議儘量使用class來建立類,符合C++程式風格。
如果一個類中沒有成員函式,就等同於C語言中的結構體了,體現不出類在物件導向程式設計中的作用。
類的成員函式
成員函式的性質
類的成員函式可以被指定為private(私有的)、public(公有的)或protected(受保護的)。
私有的成員函式只能被本類中的其他成員函式所呼叫,而不能被類外呼叫。成員函式可以訪問本類中任何成員(包括私有的和公有的),可以引用在本作用於中有效的函式。
一般做法是將需要被外界呼叫的成員函式指定為public,它們是類的對外介面。私有成員函式的作用就是支援其他函式的操作,是類中其他成員的工具函式,類外使用者不能呼叫。
成員函式的定義
成員函式的定義有兩種:類體中定義和類的外面定義。
類體內定義
class Student
{
public:
void display()
{
cout <<"num::"<<num<<endl;
cout <<"name:"<<name<<endl;
cout <<"sex:"<,sex<,endl;
}
private:
int num;
string name;
char sex;
};
Student stud1,stud2;
類的外面定義
“::”是作用域限定符或稱為作用域運算子,它宣告的函式就是屬於哪個類的。
class Student
{
public:
void display()
{
cout <<"num::"<<num<<endl;
cout <<"name:"<<name<<endl;
cout <<"sex:"<,sex<,endl;
}
private:
int num;
string name;
char sex;
};
void Student::display()
{
cout <<"num::"<<num<<endl;
cout <<"name:"<<name<<endl;
cout <<"sex:"<,sex<,endl;
}
Student stud1,stud2;
物件成員的引用
通過物件名和成員運算子訪問物件中的成員
//物件名.成員名
stud1.num;
stud1.display( );
通過只想物件的指標訪問物件中的成員
Student stud1, *p; //定義物件stud1和指向Student類的指標變數p
p = &stud1; //使p指向物件t
通過物件的引用變數訪問物件中的成員
如果為了物件定義了一個引用變數,它們是共佔同一段儲存單元的,實際上它們是同一個物件,只是用了不同的名字表示而已。因此完全可以通過引用來訪問物件中的成員,其概念和方法與通過物件名來引用物件中的成員是相同的。
Time t1; //定義物件t1
Time &t2 = t1;//定義Time引用變數t2,並使之初始化為t1
t2與t1共佔用了同一段儲存空間,故t2.hour就是t1.hour。
相關文章
- Swift 類與結構體Swift結構體
- Swift,結構體與類Swift結構體
- C# 結構體與類的區別C#結構體
- 第五章——結構體與類(序)結構體
- 第五章——結構體與類(實體和值)結構體
- iOS Swift結構體與類的方法排程iOSSwift結構體
- C++中結構體與類的區別C++結構體
- golang類和結構體Golang結構體
- 圖解計算機結構與體系分類!!圖解計算機
- 第五章——結構體與類(可變性)結構體
- 結構體與共用體結構體
- Swift-類和結構體Swift結構體
- Partial類、列舉、結構體結構體
- 指令集結構與微體系結構
- MySQL整體架構與記憶體結構MySql架構記憶體
- [Virtualization]ESXi體系結構與記憶體管理(一)體系結構記憶體
- Python中實現結構體類Python結構體
- 2. STL容器結構與分類
- Structs And Interfaces「結構體與介面」Struct結構體
- Gef與MVC體系結構MVC
- swift物件導向特性——類和結構體Swift物件結構體
- 圖結構的相似度度量與分類
- 儲存結構的種類與比較
- 類和結構
- oracle記憶體結構與管理Oracle記憶體
- 類檔案結構_class類檔案的的結構
- EF:根據實體類生成表結構SQLSQL
- c#中結構體和類的比較C#結構體
- 結構體中套用其他_結構體結構體
- MySQL體系結構與儲存引擎MySql儲存引擎
- N層結構與中介軟體(zt)
- 指標體系與樹型結構指標
- 【Java】類的結構Java
- Golang 註釋規範-類、函式、結構體等Golang函式結構體
- Swift列舉,結構體,類,擴充套件,協議Swift結構體套件協議
- TCP/IP協議與OSI體系結構總結TCP協議
- Oracle體系結構:記憶體結構和程式結構(轉)Oracle記憶體
- 結構體結構體