C++封装

目录

封装

struct和class区别

将成员属性设置为私有


封装


    1. 封装的意义
    封装是c++面向对象三大特性之一
    封装的意义:
        1)将属性和行为作为一个整体,表现生活中的事物
        2)将属性和行为加以权限控制
    封装意义一:
        在设计类的时候,属性和行为写在一起,表现事物
        语法: class 类名{    访问权限: 属性 / 行为    };

        示例:设计一个圆类,求圆的周长
        示例代码:

            #include <iostream>
            using namespace std;

            const double PI = 3.14;

            //class代表设计一个类,类后面紧跟着的就是类名称
            class yuan {
                //访问权限
            public:        //公共权限

                //属性
                int yuan_r;    //半径

                //行为
                double zhouChang()    //周长
                {
                    return 2 * PI * yuan_r;
                }
            };

            int main()
            {
                //通过圆类创建具体的圆
                yuan yuan1;
                //给圆对象的属性进行赋值
                yuan1.yuan_r = 10;

                cout << "圆的周长为:" << yuan1.zhouChang() << endl;

                system("pause");

                return 0;
            }

    封装意义二:
        类在设计时,可以把属性和行为放在不同的权限下,加以控制
        访问权限有三种
            1)public 公共权限            类内可以访问,类外可以访问
            2)protected 保护权限        类内可以访问,类外不可以访问
            3)private 私有权限            类内可以访问,类外不可以访问

struct和class区别


    在c++中struct和class唯一的区别就在于默认的访问权限不同
    区别:
        1)struct默认权限为公共
        2)class默认权限为私有

将成员属性设置为私有


    优点1:将所有成员属性设置为私有,可以自己控制读写权限
    优点2:对于写权限,我们可以检测数据的有效性(可以设置一个规则,只有符合这个规则才可以写)    示例:
        

#include <iostream>
        using namespace std;

        //将成员属性设置为私有
        //优点1:将所有成员属性设置为私有,可以自己控制读写权限
        //优点2:对于写权限,我们可以检测数据的有效性

        //设计人类
        class Preson {
        public:
            //写姓名
            void setName(string name)
            {
                m_name = name;
            }
            //读姓名
            string getName()
            {
                return m_name;
            }

            //写年龄 但必须在0~100之间
            void setAge(int age)
            {
                if (age >= 0 && age <= 100) {
                    m_age = age;
                }
                else {
                    cout << "这不是地球人该有的年龄" << endl;
                    return ;
                }
            }

            //读年龄
            int getAge()
            {
                return m_age;
            }

            //读学校
            string getSchool()
            {
                m_school = "西京";
                return m_school;
            }
        private:
            //姓名 可读可写
            string m_name;

            //年龄 可读可写 如果想修改(年龄的范围必须是0~100之间)
            int m_age = 0;

            //学校 可读
            string m_school;
        };

        int main()
        {
            Preson P1;

            //姓名 可读可写权限
            P1.setName("张三");                                //写姓名,不报错
            cout << "姓名:" << P1.getName() << endl;        //读姓名,不报错

            //年龄 可读可写 只有在0~100之间才可以写
            P1.setAge(180);                                    //写年龄,不报错
            cout << "年龄:" << P1.getAge() << endl;                        //读年龄,不报错

            //学校 可读不可写权限
            //P1.m_school = "清华";                            //写学校,报错,无权限不可访问
            cout << "学校不可写" << endl;
            cout << "学校:" << P1.getSchool() << endl;        //读学校,不报错

            system("pause");

            return 0;
        }

注:学习黑马视频做的笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值