---恢复内容开始---
类是一个模板,可用类生成一系列可用的实例。例如 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; }
原文地址:https://www.cnblogs.com/area-h-p/p/10311962.html
时间: 2024-11-05 05:49:25