C++ 封装、三种访问权限以及class与struct的区别

目录

一、 封装:

二、封装的三种访问权限:

三、封装的优点 :

四、class与struct的区别: 


一、 封装:

封装的意义:可以将一个具有统一性的事物的做一个归纳,让它们的属性和行为(方法)作为一个整体,在程序中可以反复使用,并且我们可以对它的属性和方式进行控制。

类中的属性被称为成员属性,类中的函数被称为成员函数(成员方法)。

C++通过创建来支持封装和数据隐藏。

声明一个类:

class new_Class_Name{
public://公共权限
  int 属性名;//成员属性
  void 函数名(){};//成员函数,也叫做成员方法
};

二、封装的三种访问权限:

(1)public(公共权限):属于公共权限所有属性和方法,在这个类的类内和类外都能访问

//类内与类外的概念

class new_Class_Name{
//类内
}
//类外

(2)private(私有权限):属于私有权限的所有属性和方法,在这个类的类内能访问但是在类外不能访问,因此如果我们想要访问被设置为私有权限的属性,我们只能在public中设置一个成员函数去访问被设置为私有权限的属性,这个函数就是对外的接口。它与protected很像,它们之间的区别在第3点中会说明。

#include<iostream>
using namespace std;
//定义一个类
class circle {
public:

//用一个公共的成员函数去设置R的值
	void set_R(int r) {
		R = r;
		return;
	}

//用一个公共的成员函数去调用R的值
	int get_R() {
		return R;
	}
private:
	int R;//R是私有的
};
int main() {
	circle o;
	o.set_R(10);
	cout << "圆的半径是:" << o.get_R() << endl;
}

如果想用点运算符(.)直接调用私有权限的属性是不被允许的

//错误代码

#include<iostream>
using namespace std;
class circle {

private:
	int R;
};
int main() {
	circle o;
    o.R=10;//错误
    cout << "圆的半径是:" << o.R << endl;//错误
}

(3)protected(保护权限):跟private(私有属性)很相似,都是类内能访问类外不能访问,它与private唯一的不同点就是这个的子类是能访问的protected中的属性和方法,但是不能访问private中的属性和方法。最重要的是我们能在子类中新增函数,对继承自基类的属性进行修改,这一点是private做不到的。它的优势体现在继承中:

class Father{
public:
private:
    int a;
    int b;
};
//让a,b进行值初始化
//在这个基类中没有show函数,显示a,b的值

class Son:public Father{
public:
    //想新添加一个函数
    //实现打印a,b的功能
    void show(){
        cout<<this.a<<" "<<this.b;
    }
};

这么写是错误的,因为:基类中的a,b属性的访问权限是private,在子类中我们无法对继承自基类的private成员添加新方法进行改写,但我们只要将基类中a,b的访问权限改为protected就没问题了

三、封装的优点 :

  1. 所有的成员属性在被设置为私有后,可以由我们去控制读写程序。
  2. 对于读写程序中的写程序,我们可以自由地检测它的有效性。
  3. 能够更好地对程序的功能进行拓展。

四、class与struct的区别: 

class的默认权限是private(私有),而struct的默认权限是public(公有)。这就是它们唯一的区别,在学习C语言的时候,我们并没有提到访问权限的事,但这并不意味着它不存在,我们也可以使用权限访问符对struct进行权限控制。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默示MoS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值