C++语言学习记录-21:封装

封装在之前的文章中有所涉及,现在将具体的进行学习。

封装的意义

封装将属性和行为作为一个整体,表现生活中的事物,将属性和行为加以权限控制,语法在前面类和对象一节中有大概的体现。

class classname{ public/private...:属性,行为}

属性(成员属性、成员变量)和行为(成员函数、成员方法)被统称为类中的成员。
下面用一个圆类来举例。

#include<iostream>
using namespace std;
class circle{
	public:
	int r; //圆的属性
	double C(){
	C = 2 * 3.14 * r ;  //计算圆的周长,属于行为,一般来说
	return C;             //行为使用函数来表示
	}
};
int main()
{
	circle c1;
	c1.r = 10;
	cout<<"圆的周长"<<C<<endl;
	return 0;
}

实际上类看上去就像一个升级版的结构体,对类的访问还有创建类中的一个新的对象都和结构体很相似。当然,他们之间也有区别,他们之间唯一的区别就是默认的访问权限不同。struct的默认权限为public,class的默认权限为private。
封装也可以将成员放在不同的权限下进行控制。
访问权限有三种:pubilc, private, protected
public权限被称为公共权限,在类内和类外都可以访问
protected权限被称为保护权限,类内可以访问,类外不可以访问,属性可以被继承
private权限被称为私有权限,类内可以访问,类外不可以访问,属性不可以被继承

私有属性的优势在于可以自己控制读写权限,同时在写的时候还可以检验数据的有效性。

#include<iostream>
#include<string>
using namespace std;
class person{
public:
	//修改姓名
	void setname(string name)
	{
		m_name = name;
	}
	//打印姓名
	void getname()
	{
		return m_name;
	}
	int getage()
	{
		m_age = 18;
		return m_age;
	}
	void setsecret(string secret)
	{
		m_secret = secret;
	}
private:
	string m_name; //可以读取也可以修改
	int m_age; //只读
	string m_secret; //只写
};
int main()
{
	person p1;
	p1.setname("John");
	cout<<p1.getname()<<endl; //由函数在类内调用传递到类外
	cout<<p1.getage()<<endl; //虽然可以读取,但是没有设置写的权限,写入时要进入private权限,因此不能修改
	p1.setsecret = ("secret");//在这里将secret传进了函数中,实际上secret已经发生了改变,但是由于只是可写状态,所以并不能读取里面的变化
}

实际上private的思想就是通过是否使用函数成员控制行为来决定外界对private内部的权限,使得这一权限是可以被修改的。因此,public可以被看作是一个接口,用于连接内部的属性。
在类内使用判断语句就可以控制输入的数据是否合法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值