类的封装性和信息隐蔽【C++】
类的封装性和信息隐蔽【C++】
一、公用接口和私有实现的分离
C++通过类来实现封装性,把数据和与这些数据有关的操作封装在一个类中,或者说,类的作用是把数据和算法封装在用户声明的抽象数据类型中。
在类中,被操作的数据是私有的,实现的细节对用户是隐蔽的,这种实现称为私有实现。用户只能看到系统的公有接口,这种“类的公用接口与私有实现的分离”形成了信息隐蔽。
二、类的声明和成员函数定义的分离
一个源程序可以划分多个源文件:类声明文件( .h文件 )、类实现文件( .cpp文件 )、类的使用文件( main() 所在的.cpp文件 )。利用工程来组合各个文件。
类声明文件( .h文件 ):将类的声明部分放在类声明文件(头文件)中,这就形成了类的public接口,向用户提供调用类成员函数所需的函数原型。
类实现文件( .cpp文件 ):将类成员函数的定义放在类实现文件中,这就形成了类的实现方法。
类的使用文件( main() 所在的.cpp文件 ) :将类的使用部分(通常是主程序)放在类使用文件中, 这样可以清晰地表示出本程序所要完成的工作。
如图:

例如:
//CStudent.h 这是头文件,在此文件中进行类的声明
class CStudent {
public:void Setinfo(char* na, int i, char s, int a);void Setgrad(float a, float b, float c);float average();void display();
private:const char name[20];int id;char sex;int age;float grade[3];
};//CStudent.cpp 在此文件中进行函数的定义
#include
#include
#include "CStudent.h"
using namespace std;
void CStudent::Setinfo(char* na, int i, char s, int a) {strcpy(name, na);id = i;sex = s;age = a;
}
void CStudent::Setgrad(float a, float b, float c) {grade[0] = a;grade[1] = b;grade[2] = c;
}
float CStudent::average() {return (grade[0] + grade[1] + grade[2]) / 3.0;
}
void CStudent::display() {cout << "ID:" << id << endl;cout << "Name:" << name << endl;cout << "Sex:" << sex << endl;cout << "Age:" << age << endl;
}//main,cpp 主函数模块
#include
#include "CStudent.h"
using namespace std;
int main() {CStudent stud1;stud1.Setinfo("张三", 2021725, 'm', 18);stud1.Setgrad(100, 90, 80);stud1.display();cout << "平均成绩:" << stud1.average() << endl;return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
