首页 > 编程语言 >C++复习第五天(封装)

C++复习第五天(封装)

时间:2023-04-11 22:02:29浏览次数:45  
标签:password 封装 C++ class 访问 include 第五天 权限 public

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

#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

 

标签:password,封装,C++,class,访问,include,第五天,权限,public
From: https://www.cnblogs.com/ElevHe/p/17307912.html

相关文章

  • C++-unique_lock与lock_guard区别
    C++-unique_lock与lock_guard区别https://blog.csdn.net/ccw_922/article/details/124662275https://blog.csdn.net/sinat_35945236/article/details/124505414都可以对std::mutex进行封装,实现RAII的效果。绝大多数情况下这两种锁是可以互相替代的,区别是unique_lock比lock_gu......
  • C++ Traits的笔记
    traits意思为特性,特点在C++中用于提取类型信息#include<type_traits>type_traits库中有std::is_same可以判断两个类型是否相同先看一下使用模板提取类型信息,就是多做一层封装在使用模板的过程中假设函数中有必要声明一个变量,要和迭代器所指向的对象类型相同template<class......
  • C++第二天
    计算正五边形的周长和面积#include <bits/stdc++.h>using namespace std;int main(){    double n,S,C;    double a,b;    cin>>n;    a=sqrt(5);    b=25+10*a;    S=sqrt(b)/4*n*n;    cout<<S<<endl;    C=5*n;    cout<<C<<endl;......
  • C++创建线程
    C++11中使用std::thread来创建线程。一、创建线程#include<iostream>#include<thread>#include<mutex>/*函数指针创建线程*/voidthread_func(intsize){std::cout<<"thread_func:"<<std::this_thread::get_id()<<std::en......
  • C++第二章课后练习题 2-24,2-25
    编写一个完整的程序,实现功能:向用户提问“现在正在下雨吗?”,提示用户输入Y或N。若输入为Y,显示“现在正在下雨。”;若输入为N,显示“现在没有下雨。”;否则继续提问“现在正在下雨吗?”。#include<iostream>usingnamespacestd;intmain(){cout<<"现在正在下雨吗?"<<endl;......
  • 封装导出Excel文件
    utils/exportexcel.jsimport{parseTime}from'@/utils/format';import{Message}from'element-ui';/***导出Excel文件*@param{*}data文件数据流*@param{String}filePrefix文件前缀名*@param{String}fileSuffix文件后缀名*/exportfuncti......
  • 封装,继承,多态
    封装该露的露,该藏的藏我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。记住这句话就够......
  • 标 题: 让 Python 拥有 C/C++ 一样的速度,编译神器 Codon 发布!
    发信人:mseer(mseer),信区:Python标题:让Python拥有C/C++一样的速度,编译神器Codon发布!发信站:水木社区(TueMar1423:52:022023),站内https://mp.weixin.qq.com/s/n5LRxftQiiP8FO6nvyL3-g为了解决这一难题,麻省理工学院的计算机科学家出手了,他们共同研发了一......
  • C++核心编程之-函数提高
    函数提高函数默认参数在c++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型函数名(参数=默认值){}注意点:1、如果某个位置参数有默认值,那么从这个位置往后,必须都要有默认值​ 2、如果函数声明有默认值,函数实现的时候就不能有默认参数函数占位参数C++中......
  • 封装统一请求状态返回Result
    1、测试数据publicclassTest{publicstaticvoidmain(String[]args){System.out.println("Response.success(ErrorEnum.SUCCESS)="+Response.success(ErrorEnum.SUCCESS));System.out.println("Response.success(ErrorEnum.FA......