C++的封装方法是什么
发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,本篇内容介绍了"C++的封装方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!封装c++认为万
千家信息网最后更新 2025年02月09日C++的封装方法是什么
本篇内容介绍了"C++的封装方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
封装
c++认为万事万物皆为对象,对象上有其属性和行为
封装的意义:
将属性和行为作为一个整体,表现生活中的事物
将属性和行为加以权限控制
封装意义一:
在设计类的时候,属性和行为写在一起,表现事物
语法:
class 类名{ 访问权限:属性 / 行为};
属性和行为作为整体
#includeusing 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;}
实例—设计学生类
#includeusing namespace std;//#include //设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号//设计学生类class Student {public://公共权限 //类中的属性和行为 我们统一称为 成员 //属性 成员属性 成员变量 //行为 成员函数 成员方法 //属性 string m_Name;//姓名 int m_Id;//学号 //行为 //显示姓名和学号 void showStudent() { cout << "姓名:" << m_Name << " 学号:"< 访问权限
封装意义二:
类在设计时,可以把属性和行为放在不同的权限下,加以控制
权限访问有三类:
public 公共权限
protected 保护权限
private 私有权限
#includeusing 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唯一的区别就在于默认的访问权限不同
区别:
struct默认权限为公共
class默认权限为私有
#includeusing namespace std;class C1 { int m_A;//默认权限 是私有};struct C2 { int m_A;//默认权限 是公共};int main() { //struct和class区别 //struct 默认权限是 公有 public //class 默认权限是 私有 private C1 c1; //c1.m_A = 100;//在class里默认权限 私有,因此类外不可以访问 C2 c2; c2.m_A = 100;//在struct默认的权限为公共,因此可以访问 system("pause"); return 0;} 成员属性私有化
优点1:将所有成员属性设为私有,可以自己控制读写权限
优点2:对于写权限,我们可以检测数据的有效性
#includeusing namespace std;#include //成员属性设置为私有//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 << "姓名为:" < 设计立方体类
#includeusing 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的面积为:" < "C++的封装方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
权限
属性
成员
行为
姓名
立方体
私有
设计
函数
对象
封装
内容
学号
学生
保护
周长
实例
情人
张三
控制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学软件开发学什么好呢
服务器虚拟化软件排名
关系数据库建立
百度地图数据库更新一次
计算机资格网络安全自查
海南海智互联网科技有限公司
软件开发是一本还是二本
江苏网络安全审计硬件设备多少钱
地理信息 数据库
运城软件开发行业标准
crm数据库功能
网络安全知识在哪里学
写入数据库sql文件
qq十五分钟网络技术
在使用灾害信息员数据库时
同城游游戏网络安全
游驰网络技术
hp服务器硬盘左边3个指示灯
广州饭堂智慧餐饮软件开发
挑战一天炸完mc一百个服务器
服务器部署静态资源nginx
数据库分层命名规范
steam重启服务器
网络安全云原生
数据库逻辑设计就是数据表设计吗
网络安全ATA
互联网科技相关英文单词
哪些属于网络安全的内容(
5G网络安全基线
智能化网络安全是什么