C++類的定義,成員函數的定義,對象的創建與使用


 

類是一個模板,可用類生成一系列可用的實例。例如 int B就是生成了一個符合int的數據B,類也是一樣,使用類名就可以直接生成一個實例,

該實例中包含類中所有的數據類型和對這些數據的操作方法。

首先,創建一個類

class OBJ
{
private:
	char Name[MAX];
	int Num;
	float Price;
	float Total_price;
protected:
public:
}

該類中包含三個部分,私有部分(private)、保護部分(protected)、公有部分(public)(當然也可以都沒有成為一個空類)

其中private和protected部分中的數據和內容不可以在類外通過對象(實例)直接調用

#include<iostream>
using namespace std; #define MAX 10
class OBJ   //創建類 { private: char Name[MAX]; int Num; float Price; float Total_price; protected: public: }; void main() { OBJ ob;//使用類實例化ob ob.Num = 10; }

如上使用ob的private成員編譯無法通過,報錯

test.cpp(17): error C2248: “OBJ::Num”: 無法訪問 private 成員(在“OBJ”類中聲明)

一般使用public方法來操作private數據,以保證數據的安全性,這同樣體現了C++的封裝性

#include<iostream>
using namespace std; #define MAX 10
class OBJ { private: char Name[MAX]; int Num; float Price; float Total_price; protected: public: void Get_obj(char name[], int num, float price) { strcpy(Name, name); Num = num; Price = price; Total_price = Price*Num; } char *Get_name() { return Name; } int Get_num() { return Num; } float Get_price() { return Price; } float Get_total_price() { return Price * Num; } };

 (一個類結束后記得加上分號,血淚教訓,怎么都找不到錯誤原因)

成員函數可以在類內部實現(如上所示),也可以在類外部實現,若在外部實現

其內部只需將函數聲明后加上分號

其外部實現使用如下格式

返回值類型 類名 ::函數名(參數)

例如

class OBJ { private: char Name[MAX]; int Num; float Price; float Total_price; protected: public: void Get_obj(char name[], int num, float price); }; void OBJ::Get_obj(char name[], int num, float price) { strcpy(Name, name); Num = num; Price = price; Total_price = Price*Num; }

::叫做作用域解析符,當類的方法在類外部實現時,用來限定該方法是哪一個類的

 當一個類中有數據和方法但是沒說明其屬於哪部分(protected、private、protected)

則默認其為私有部分

學習過程完整代碼如下

#include<iostream>
using namespace std; #define MAX 10
class OBJ { private: char Name[MAX]; int Num; float Price; float Total_price; protected: public: void Get_obj(char name[], int num, float price) { strcpy(Name, name); Num = num; Price = price; Total_price = Price*Num; } char *Get_name() { return Name; } int Get_num() { return Num; } float Get_price() { return Price; } float Get_total_price() { return Price * Num; } }; void main() { OBJ ob; ob.Get_obj("LLL",10,10); cout<<ob.Get_name()<<endl; cout<<ob.Get_num()<<endl; cout<<ob.Get_price()<<endl; cout<<ob.Get_total_price()<<endl; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM