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;
}

猜你喜欢

转载自www.cnblogs.com/area-h-p/p/10311962.html