ElevHe

博客园 首页 新随笔 联系 订阅 管理
  12 随笔 :: 0 文章 :: 0 评论 :: 201 阅读

封装练习,设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示姓名和学号。

复制代码
#include <iostream>
#include <string>
using namespace std;

class Student {
public:
    // 类中的属性和行为,我们统一称为 成员
    string m_name;
    int m_Id;

    void showStudent() {
        cout << "Name:" << m_name << endl << "Id:" << m_Id << endl;
    }

    void setName(string name) {
        m_name = name;
    }
    void setId(int id) {
        m_Id = id;
    }
};



int main() {
    Student stu1,stu2;
    stu1.m_Id = 11;
    stu1.m_name = "ElevaHe";
    stu1.showStudent();

    stu2.setId(2);
    stu2.setName("ZhangMaZi");
    stu2.showStudent();
    return 0;
}
复制代码

 

封装的意义二:

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

权限有三种:

1.public 公共权限    类内可访问,类外可访问

2.protected 保护权限  类内可访问,类外不可访问,儿子可以访问父亲中的保护内容

3.private 私有权限    类内可访问,类外不可访问,儿子不可以访问父亲的隐私内容

复制代码
#include <iostream>
using namespace std;

class Person {
public:
    string m_Name;
protected:
    string m_Car;
private:
    int m_password;
public:
    void func() {
        m_Name = "LUOXIANG";
        m_Car = "BYD";
        m_password = 123;
    }
};

int main() {
    Person p1;
    p1.m_Name = "LISI";
    // p1.m_Car = "U8";  
    // p1.m_password = 321; 成员 "Person::m_password" (已声明 所在行数:10) 不可访问
    return 0;
}
复制代码

 

class 和 struct 的区别:

struct 权限默认公共,class 权限默认私有

 

将成员属性设为私有

优点:

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

2.对于写权限,我们可以检测数据的有效性

复制代码
#include <iostream>
using namespace std;

//成员设置为私有
//1.可以自己控制读写权限
//2.对于写,可以检测数据的有效性

class Person {
public:
    void setName(string name) {
        m_Name = name;
    }

    void readName() {
        cout << m_Name << endl;
    }

protected:
    
private:
    string m_Name;      //可读可写
    int m_age;          //只读
    string m_Lover;     //只写

};

int main() {
    Person p1;
    p1.setName("张三");
    p1.readName();
    return 0;
}
复制代码

P104

 

posted on   ElevHe  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示