1. 程式人生 > >C++類的定義,成員函數的定義,對象的創建與使用

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

color ostream err c++ div span bsp 但是 style

---恢復內容開始---

類是一個模板,可用類生成一系列可用的實例。例如 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;
}

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