標籤:head class關鍵字 標識 world span 正方形 log 重載 資料
1、類基礎 1.1 基本概念
類是由資料結構和方法組成的,方法就是對資料結構進行處理。
類由.h檔案和.cpp檔案組成,.h檔案中表明該類的基本介面,.cpp檔案實現具體的方法。
通過類可以建立具體的對象,通過對象來調用方法。
比如:求正方形的面積。
其中,"正方形"就是一個類,正方形的邊長"a"就是資料,面積"S = a * a"就是方法。
而"正方形A的邊長為5mm"就是代表一個對象的資料為多少,調用方法即可求出面積為25mm2。
1.2 一個類的基本組成部分
#ifndef __HEAD_H__#define __HEAD_H__//使用class關鍵字,"Stock"為類名,一般來說類名首字母大寫class Stock{//"private"標識私人類成員,外部不可訪問,達到資料隱藏的目的private: long val; void set_num();//"public"標識公用類成員,外部可訪問public://建構函式,建立對象時預設調用 Stock();//解構函式,釋放對象時預設調用 ~Stock(); void show();};#endif
類雖然是資料隱藏,但還是將內部資料也一併寫在了類結構裡。這是因為每建立對象時,都會建立私人資料,各個對象使用各自的資料,共用公用的方法。
實作類別成員函數如下所示:
//head.cpp#include "head.h"//使用"函數返回 類名::函數名()"的方式實現一般函數void Stock::show(){}void Stock::set_num(){}//使用"類名::類名()"的方式實現建構函式Stock::Stock(){ val = 0;}//使用"類名::~類名()"的方式實現解構函式Stock::~Stock(){ }
類的使用如下所示:
//use.cpp#include "head.h"int main(){ Stock use_class; use_class.show(); return 0; }
1.3需要注意的幾點
1)、當建構函式具有參數時,需要在建立對象時為其指定參數值。
//假設建構函式聲明如下Stock(const string & co, long n, double pr);//則在建立對象時有如下使用幾種方式//此種方式,編譯器可能建立一個臨時對象,給food賦值後,又刪除該臨時對象Stock food = Stock("World Cabbage", 250, 1.25);//也可以使用建構函式給對象賦新值,這種方式一定會建立臨時對象food = Stock("Nifty Foods", 50, 1.25);Stock food("World Cabbage", 250, 1.25);Stock *pfood = new Stock("World Cabbage", 250, 1.25);Stock food = {"World Cabbage", 250, 1.25} //c++11Stock food {"World Cabbage", 250, 1.25} //c++11Stock *pfood = new Stock{"World Cabbage", 250, 1.25} //c++11
當前也可以給建構函式所有參數預設值或者利用函數重載來避免建立對象時顯示的調用建構函式。
2)、只要類方法不修改調用對象,就應該將其聲明為const成員函數。
//聲明void show() const;//定義void Stock::show() const{}
3)、如果建構函式使用了new,則解構函式必須提供delete。
c/c++ -->對象和類