类和对象(2)--封装和访问控制

本文介绍了C++中的封装概念,对比了C语言与C++在封装上的差异。C++的class允许指定成员的访问属性,如public、protected和private,实现信息隐蔽。struct默认所有成员为public,不具备封装优势。文中强调了将成员属性设为私有的重要性,以控制数据的读写权限,并举例展示了如何通过setter和getter方法进行有效验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 封装和访问控制

1.1 C语言和C++封装

1.1.1 C语言封装

当单一变量无法完成描述需求的时候,结构体类型解决了这一问题。可以将多个类型打包成一体,形成新的类型。 这是C语言中封装的概念。

特点:将属性和行为分离

1.1.2 C++封装:

用class去封装带行为的类

class 封装的本质,在于将数据和行为,绑定在一起然后能过对象来完成操
作。 

特点:

  1. 将属性和行为作为一个整体,来表现生活中的事物
  2. 将属性和行为加以权限控制

1.2 封装的访问属性

访问属性属性类内部类外部
public公有可访问可访问
protected保护可访问不可访问
private私有可访问不可访问

struct 中所有行为和属性都是public 的(默认)。 C++中的 class可以指定行为和属性的访问方式。 

封装,可以达到,对内开放数据,对外屏蔽数据,对外提供接口。达到了信息隐蔽的功能。 
比如我们用 struct 封装的类,即知其接口,又可以直接访问其内部数据,这样却没有达到信息隐蔽的功效。而class则提供了这样的功能,屏蔽内部数据,对外开放接口。

1.2.1 struct和class关键字区别

在用struct定义类时,所有成员的默认属性为public
在用class定义类时,所有成员的默认属性为private

2 扩展–尽量将成员属性设置为私有

  1. 自己可以控制读写权限
class Person
{
public:
	int showAge()	// 读
	{
		return m_age;
	}
	void setName(double weight)	// 写
	{
		m_weight = weight;
	}
private:
	int m_age;	// 控制其权限为只读
	double m_weight;	// 控制其权限为只写
}
  1. 可以对设置内容加有效性验证
class Person
{
public:
	int showAge()		// 读
	{
		return m_age;
	}
	bool setAge(int age)	// 写
	{
		if (age > 150 || age < 0)
		{
			return false;
		}
		m_age = age;
		return true;
	}
private:
	int m_age;	// 控制其权限为读写,并加有效验证
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值