文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++的封装方法是什么

2023-06-29 02:55

关注

本篇内容介绍了“C++的封装方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

封装

c++认为万事万物皆为对象,对象上有其属性和行为

封装的意义:

 封装意义一:

在设计类的时候,属性和行为写在一起,表现事物

语法:

class  类名{  访问权限:属性 / 行为};

属性和行为作为整体

#include<iostream>using namespace std;//圆周率const double PI = 3.14;//设计一个圆类,求圆的周长//圆求周长的公式:2*PI*半径class Circle {//访问权限//公共权限public: //属性//半径 int m_r;//行为//获取圆的周长double calculateZC() {return 2 * PI * m_r;}}; int main() {//通过圆类,创建具体的圆(对象)//实例化  (通过一个类 创建一个对象的过程)Circle c1;//给圆对象的属性进行赋值c1.m_r = 10;//2 * PI * m_r = 62.8;cout << "圆的周长为:" << c1.calculateZC () << endl;system("pause");return 0;}

 实例&mdash;设计学生类

#include<iostream>using namespace std;//#include<string>//设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号//设计学生类class Student {public://公共权限//类中的属性和行为 我们统一称为 成员//属性 成员属性 成员变量//行为 成员函数 成员方法 //属性string m_Name;//姓名int m_Id;//学号//行为//显示姓名和学号void showStudent() {cout << "姓名:" << m_Name << "  学号:"<<m_Id << endl;}//给姓名赋值void setName(string name) {m_Name = name;}void setId(int Id) {m_Id = Id;}};int main() {//创建一个具体的学生  实例化对象Student s1;//给s1对象进行属性赋值操作//s1.m_Name = "张三";s1.setName("张三");//s1.m_Id = 1;s1.setId(1);s1.showStudent(); Student s2;s2.m_Name = "李四";s2.m_Id = 2;s2.showStudent();system("pause");return 0;}

访问权限

封装意义二:

类在设计时,可以把属性和行为放在不同的权限下,加以控制

权限访问有三类:

#include<iostream>using namespace std;//访问权限//三种//公共权限 public        成员  类内可以访问  类外也能访问//保护权限 protected     成员  类内可以访问  类外不可以访问 儿子可以访问到父亲中的保护内容//私有权限 private 成员  类内可以访问  类外不可以访问 儿子不可以访问到父亲的私有内容class Person {public://公共权限string m_Name;//姓名protected://保护权限string m_Car;//汽车private:int m_Password;//银行卡密码public:void func() {m_Name = "张三";m_Car = "拖拉机";m_Password = 123456;}};int main() {//实例化具体对象Person p1;p1.m_Name = "李四";//p1.m_Car = "奔驰";//保护权限的内容,在类外访问不到//p1.m_Password = 123;//私有权限的内容,在类外访问不到   system("pause");return 0;}

class与struct区别

在c++中struct和class唯一的区别就在于默认的访问权限不同

区别:

#include<iostream>using namespace std;class C1 { int m_A;//默认权限 是私有};struct C2 {int m_A;//默认权限 是公共};int main() {//struct和class区别//struct 默认权限是 公有 public//class  默认权限是 私有 privateC1 c1;//c1.m_A = 100;//在class里默认权限 私有,因此类外不可以访问 C2 c2;c2.m_A = 100;//在struct默认的权限为公共,因此可以访问system("pause");return 0;}

成员属性私有化

#include<iostream>using namespace std;#include<string>//成员属性设置为私有//1.可以自己控制读写权限//2.可以写可以检验数据的有效性//设计人类class Person {public://设置姓名void setName(string name) {m_Name = name;}//获取姓名string getName() {return m_Name;}//获取年龄  只读int getAge() {//m_Age = 0;//初始化零岁return m_Age;}void setAge(int age) {if (age < 0 || age>150) {m_Age = 0;cout << "你这个老妖精!" << endl;return;}m_Age = age;}//设置情人  只写void setLover(string lover) {m_Lover = lover;} private://姓名  可读可写string m_Name;//年龄  只读int m_Age;//情人  只写string m_Lover;};int main() {Person p;p.setName ( "张三");cout << "姓名为:" <<p.getName() << endl;//p.m_Age = 18;//p.setAge(18);p.setAge(18);cout << "年龄为:" << p.getAge() << endl;//设置情人为苍井女士p.setLover("苍井");//cout<<"情人为:"<<p.m_Lover << endl;只写权限,数据不可以访问到的 system("pause");return 0;}

设计立方体类

#include<iostream>using namespace std;//立方体类设计//1.创建立方体类//2.设计属性//3.设计行为 获取立方体面积和体积//4.分别利用全局函数和成员函数 判断两个立方体是否相等 class Cube {public://行为// 设置长void setL(int l) {m_L = l;}// 获取长int getL() {return m_L;}// 设置宽void setW(int w) {m_W =w ;}// 获取宽int getW() {return m_W;}// 设置高void setH(int h) {m_H = h;}// 获取高int getH() {return m_H;}// 获取立方体面积int calculateS() {return 2 * m_L * m_W + 2 * m_L * m_H + 2 * m_W * m_H;}// 获取立方体体积int calculateV() {return m_L * m_W * m_H;}//利用成员函数判断两个立方体是否相等bool isSameByClass(Cube &c) {if (m_L == c.getL() && m_W == c.getW() && m_H == c.getH()) {return true;}return false;}private://属性int m_L;//长int m_W;//宽int m_H;//高};//利用全局函数来判断 两个立方体是否相等bool isSame(Cube &c1,Cube &c2) {if (c1.getL() == c2.getL() && c1.getW() == c2.getW() && c1.getH() == c2.getH()) {return true;}return false;}int main() {//创建立方体对象Cube c1;c1.setL(10);c1.setW(10);c1.setH(10);cout << "c1的面积为:" <<c1.calculateS() << endl;cout << "c1的体积为:" << c1.calculateV() << endl;//创建第二个立方体Cube c2;c2.setL(10);c2.setW(10);c2.setH(10); //利用全局函数判断bool ret = isSame(c1,c2);if (ret) {cout << "c1和c2是相等的" << endl;}else {cout << "c1和c2是不相等的" << endl;}//利用成员函数判断ret = c1.isSameByClass(c2);if (ret) {cout << "成员函数判断的:c1和c2是相等的" << endl;}else {cout << "成员函数判断的:c1和c2是不相等的" << endl;}system("pause");return 0;}

“C++的封装方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯