C++学习笔记(8):封装—类和对象

注:转载请标明原文出处链接: https://lvxiaowen.blog.csdn.net/article/details/107194105

1 类与对象的定义

狗可以表示为一个类。下图中,当具体到某只狗的信息和技能时,可以称之为对象。
在这里插入图片描述
当有多只狗时,为了便于管理,可以建立表格:
在这里插入图片描述
将狗的信息抽象出来,定义一个类,如下图:
在这里插入图片描述
类是对现实生活中一类具有共同特征的事物的抽象,类的内部封装了属性和方法,类的构成包括数据成员和成员函数。类的实例称为对象,对象是具体的事物。

2 封装

类抽象出来的并不是狗的全部信息。目的不同,抽象出的信息也不同。例如下图的TV类,定义了名字、型号、音量调节和电源控制。但仍有很多细节没有描述,但这不代表这些细节不存在,而是被隐藏起来了。
在这里插入图片描述
下图中电路板的工作过程并不展示给用户,而是选择性暴露信息。
在这里插入图片描述

封装:把实现细节封装起来,只暴露用户关心的部分。
在这里插入图片描述

3 访问限定符

访问限定符:publicprivateprotected。成员和类的默认访问修饰符是 private
在这里插入图片描述
public:任何类都可以访问。
private:只有本类中的成员函数可以访问。
protected:只有本类和继承类可以访问。

在这里插入图片描述

4 对象实例化

对象实例化:计算机根据一个类的设计,制造出多个对象的过程。
在这里插入图片描述

4.1 实例化对象的方式

(1)从栈实例化对象: TV tv;
(2)从堆实例化对象: TV *p = new TV();
对堆进行实例化时要注意需要判断new失败的情况,即:if( NULL == p){return 0;}
在这里插入图片描述
在这里插入图片描述

5 对象成员的访问方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6 对象实例化及访问示例

题目描述:
  定义一个坐标类,
  数据成员:x和y
  成员函数:分别打印和y的值

#include <iostream>
#include <stdlib.h>
using namespace std;
class Coordinate
{
public:
	int x;
	int y;

	void printX()
	{
		cout << "x =" << x << endl;
	}
	void printY()
	{
		cout << "y =" << y << endl;
	}
};

int main()
{
	Coordinate coor; //从栈实例化对象
	coor.x = 10;
	coor.y = 20;
	coor.printX();
	coor.printY();

	Coordinate *p = new Coordinate(); //从堆实例化对象
	if (NULL == p)  //确定内存有没有申请失败,若失败则终止
	{
		return 0;
	}
	p->x = 100;
	p->y = 200;
	p->printX();
	p->printY();
	delete p;
	p = NULL;

	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述

7 struct和class区别

  1. struct默认是公有继承(public),class默认是私有继承(private)
  2. struct中默认的成员访问权限是public的,而class中则是private的。
  3. class还可用于定义模板参数,如typename,但是关键字struct不能用于定义模板参数。

参考资料

[1] https://www.imooc.com/learn/381
[2] https://www.runoob.com/cplusplus/cpp-class-access-modifiers.html
[3] https://blog.csdn.net/qq_37964547/article/details/81835488

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值