>[info]# **類和對象的關系**
- 在C++中,類是用戶自定義的數據類型,稱為類類型,和基本數據類型一樣,都是C++合法的數據類型.
- 廣義上講,對象是指一切可以被感知和觸摸的客觀實體.按程序設計的觀點,對象則是變量概念的進一步推廣和延伸.
- 在聲明類類型后,用該類的類名去定義一個變量,則稱這個變量為該類的一個對象.類是抽象的,不占用內存,而對象是具體的,占用存儲空間.
- 類與對象的關系等價于基本數據類型與變量的關系.
>[info]# **類中的成員**
- 數據成員
- 成員函數
## **成員訪問限定符**
**public**:類中成員被定義為public,則該成員可被任何函數訪問
**protected**:類中成員被定義為protected,則該成員只能被該類中的函數和友元訪問,還可以被該類繼承得到的類訪問。
**private**:類中成員被定義為private,則該成員只能被該類中的函數和友元訪問
>[info]# **類的聲明**
```
class 類名
{
public:
公用的數據和成員函數;
protected:
保護的數據和成員函數;
private:
私有的數據和成員函數;
};
```
## **例子**
```
#include <iostream> // 預處理命令
using namespace std;
class Student //聲明一個類,類名為Student
{
private: //以下為類中的私有部分
int num; //私有變量num
int score; //私有變量score
public: //以下為類中的公用部分
void setdata( ) //定義公用函數setdata
{
cin>>num; //輸入num的值
cin>>score; //輸入score的值
}
void display( ) //定義公用函數display
{
cout<<”num=”<<num<<endl;//輸出num
cout<<”score=”<<score<<endl;//輸出score
}
} ; // 類的聲明結束
```
>[info]# **定義對象**
## **先聲明類型,然后再定義對象**
聲明了類類型后,定義對象有兩種形式:
? 1.class 類名 對象名
```
?class Student stud1,stud2;
```
? 2.類名 對象名
```
? Student stud1,stud2;
```
## **在聲明類類型的同時定義對象**
```
class Student //聲明類部分
{
public: //先聲明公有部分
void display
{
cout<<"name:"<<name<<endl;
cout<<"num:"<<num<<endl;
cout<<"sex:"<<sex<<endl;
}
private: //后聲明私有部分
int num;
char name[20];
char sex;
}stu1,stu2; //定義了兩個Student類的對象
```
## **不出現類名,直接定義對象**
```
class //無類名
{
public: //聲明以下部分為共有
|
|
|
private: //聲明以下部分為私有
|
|
|
}stu1,stu2; //定義了兩個無類名的對象
```
>[info]# **類和結構體的異同**
- C的結構可以把相關聯的數據元素組成一個單獨的統一體.
- C++的類既能包含數據成員,又能包含成員函數.
- C++中的結構也可以有成員函數,而C中不允許.
## **C++中類與結構的唯一區別:**
**類**(class)聲明中,其成員默認情況下是private的.
**結構**(struct)聲明中,其成員默認情況下是public的.
- 介紹
- 編程設計語言
- 第一章 對C++的初步認識
- 1.2 最簡單的C++程序
- 1.3 C++對C的補充
- 1.3.1 return
- 1.3.2 輸入輸出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定義常變量
- 1.3.5 函數原型聲明
- 1.3.6 內置函數
- 1.3.7 函數重載
- 1.3.8 函數模板
- 1.3.9 有默認值的參數
- 1.3.10 作用域
- 1.3.11 const修飾指針
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 變量
- 1.3.15 字符串變量
- 第二章 類與對象
- 2.2 類的聲明和對象的定義
- 2.3 類的成員函數
- 第三章 關于類和對象的進一步討論
- 3.1 構造函數
- 3.1.1 對象的初始化
- 3.1.2 構造函數
- 3.2 析構函數
- 3.3調用析構函數和構造函數的順序
- 3.4 對象數組
- 3.5 對象指針
- 3.6 共享數據的保護
- 3.7 對象的建立與釋放
- 3.8 對象的賦值與復制
- 3.9 靜態成員
- 3.10 友元
- 3.11 類模板
- 第四章 運算符重載
- 數據類型轉換
- 運算符重載
- 重載流插入運算符和流提取運算符
- 第五章 繼承與派生
- 繼承與派生
- 第六章 多態性與虛函數
- 多態性
- 虛函數
- 純虛函數與抽象類