【C++】类与对象 --封装 & 权限访问

c++面向对象的三大特性:封装、继承、多态

一、封装

意义:将属性和行为作为一个整体 , 加以权限控制

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

** 设计一个圆类 求园的周长 **

class Circle {

    //权限
    public;

    int m_r;
    
    //行为
    double ZC()
    {
        return 2 * PI * m_r
    }

}

int main()
{
    Circle cl;
    cl.m_r = 10;
    
    cout << "圆的周长为:" << cl.ZC() << endl;
}

** 设计一个学生类,属性有姓名、学号,可以给姓名学号赋值,显示姓名学号 **

class student {

public:// 公共权限
    //属性 成员属性 / 变量
    string name;
    int id;

    //行为 成员函数 / 方法
    void set(string na,int num) {
       name = na;
       id = num;
    }

    void show() {
        cout << "姓名:" << name << endl;
        cout << "学号:" << id << endl;
    }

};

int main()
{
    student sl,s2;
    sl.set("蒲喷喷", 5);
    sl.show();

    s2.set("文韬", 20);
    s2.show();

    system("pause");
    return 0;
}

二、访问权限

①public        公共权限

类里可以访问,类外也可以访问

②protected   保护权限

类里可以访问,类外不可以访问,父的内容子可以访问

③private       私有权限

类里可以访问,类外不可以访问,父的内容子不可以访问

三、struct 和 class 的区别

struct 默认权限是公共

class 默认权限是私有

四、成员属性设置为私有

优点:

①将所有成员属性设置为私有,可以自己控制读写权限

#include <iostream>
using namespace std;

class P 
{
public:
    //设置姓名
    void setName(string na) 
    {
        name = na;
    }
    //获取姓名
    string getName() 
    {
        return name;
    }
    
    //获取年龄
    int getAge() 
    {
        return age;
    }

    //设置偶像
    void setIdol(string s) 
    {
        Idol = s;
    }
private:
    string name;//姓名 可读可写

    int age = 18;//年龄 只读

    string Idol;//偶性 只写
};

int main()
{
    P p;
    //姓名读写
    p.setName("张三");
    cout << "姓名:" << p.getName() << endl;
    //年龄读
    cout << "年龄:" << p.getAge() << endl;
    //偶像写
    p.setIdol("南波万男团");

    system("pause");
    return 0;
}

②对于写权限可以检测数据有效性

#include <iostream>
using namespace std;

class P 
{
public:
    //设置姓名
    void setName(string na) 
    {
        name = na;
    }
    //获取姓名
    string getName() 
    {
        return name;
    }
    
    //获取年龄
    int getAge() 
    {
        return age;
    }
    //设置年龄 0~150之间
    void setAge(int a)
    {
        if (a < 0 || a > 150) 
        {
            cout << "输入有误" << endl;
        }
        age = a;
    }

    //设置偶像
    void setIdol(string s) 
    {
        Idol = s;
    }
private:
    string name;//姓名 可读可写

    int age = 18;//年龄 只读 也可以写 但是需要在(0~150)之间

    string Idol;//偶性 只写
};

int main()
{
    P p;
    //姓名读写
    p.setName("张三");
    cout << "姓名:" << p.getName() << endl;
    //年龄读
    cout << "年龄:" << p.getAge() << endl;
    //偶像写
    p.setIdol("南波万男团");

    system("pause");
    return 0;
}

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值