類與結構體
目錄
類與結構體的異同
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結構體
- iOS Swift結構體與類的方法排程iOSSwift結構體
- golang類和結構體Golang結構體
- 圖解計算機結構與體系分類!!圖解計算機
- 結構體與共用體結構體
- Swift-類和結構體Swift結構體
- Partial類、列舉、結構體結構體
- MySQL整體架構與記憶體結構MySql架構記憶體
- 2. STL容器結構與分類
- Structs And Interfaces「結構體與介面」Struct結構體
- 儲存結構的種類與比較
- 圖結構的相似度度量與分類
- 類檔案結構_class類檔案的的結構
- 結構體中套用其他_結構體結構體
- 【Java】類的結構Java
- MySQL體系結構與儲存引擎MySql儲存引擎
- 上下文 Context 與結構體 StructContext結構體Struct
- TCP/IP協議與OSI體系結構總結TCP協議
- Golang 註釋規範-類、函式、結構體等Golang函式結構體
- 結構體結構體
- Oracle體系結構概述與SQL解析剖析OracleSQL
- 【體系結構】SCN與checkpoint(檢查點)
- 集合框架類結構圖框架
- 結構化與非結構化
- 【JVM之記憶體與垃圾回收篇】JVM與Java體系結構JVM記憶體Java
- [swift 進階]讀書筆記-第五章:結構體和類 C5P3_結構體(struct)Swift筆記結構體Struct
- 計算機組成結構與基本體系計算機
- 計算機組成與體系結構-cache計算機
- 順序結構與選擇結構
- python分支結構與迴圈結構Python
- Go 結構體Go結構體
- Kotlin之類繼承結構Kotlin繼承
- iOS探索 類的結構分析iOS
- 3:Oracle體系結構(邏輯結構)Oracle
- 第一章 JVM與Java體系結構JVMJava
- 合金的晶體結構與哪些因素有關
- Rust程式設計與專案實戰-結構體Rust程式設計結構體
- 第一章JVM與Java體系結構JVMJava