初识类和对象

1.什么是类和对象?

在C语言中,并没有类和对象这个概念。而在C++中,引入了这个概念。提到类和对象,我们先要了解什么是面向过程和面向对象。

在一个外卖系统中,面向过程的设计思路是将送餐、下单、接单等操作直接罗列出来并单独进行设计。而对于面向对象,我们可以设计出用户、商家、配送员这三个类。而用户下单、商家接单、配送员送餐则是不同类之间的交互操作。

在C语言中实现栈,我们会通过一个结构体储存一个栈的所有数据:指向栈空间的指针、栈顶元素、栈的大小等数据。而操作栈的函数则与数据分离,保存在栈结构体之外。

而在C++中,我们可以将操作栈的这些函数与数据一同保存在一个自定义类型中,构成一个类。

struct stack
{
	int* a;
	int top;
	int capacity;
	void push(int x)
	{
		//...
	}
	void pop()
	{
		//...
	}
};

2.类的定义

在C++中定义一个类的方式如下:

class a
{
	int x;
    void fun();
};

其中,class表明了a是一个类,变量x和fun函数分别是a类的成员变量与成员函数。

可以看到,类的结构与C语言中结构体十分类似。实际上,C++中也可以使用struct关键字构造类。

而class与struct定义出的类有所不同,这里我们要了解什么是访问限定符。

3.类的访问限定与封装

我们知道,在C语言中,所有的数据都可以直接进行操作。例如对于一个栈,我们可以直接使用push函数以进行压栈操作,但我们也可以通过在栈的顺序表末尾插入一个元素达到相同的效果。我们甚至可以在顺序表的任意位置进行元素的插入,以达到随机位置插入的效果,但是很明显这违反了栈的性质。

可以看出,C语言对于数据没有任何的保护措施,使得用户可以直接对数据进行操作。而这种没有限定的操作很容易产生错误,就像例子中对栈的任意位置进行插入一样。

所以C++中对这样的问题进行了处理,既访问限定。

访问限定符有三:

public//公有:在类的内外都可以进行访问
protected//保护:只有类的内部可以进行访问
private//私有:同protected,两者的差异在继承部分才会体现,这里暂不说明

通过使用这些访问限定符,就可以对数据或者函数进行访问限定,只将部分接口提供给外部用户使用。例如一个栈只对外提供压栈、出栈等操作,而不对外提供自身的顺序表。这样就达到了封装的目的。

了解了访问限定符,我们就可以解答在C++中class与struct的区别了。

class定义出的类的默认成员访问方式是private,而struct定义出的类的默认成员访问方式是public。

最后,我们浅谈一下封装。

作为面向对象的三大特性(封装,继承,多态)之一,封装将数据与操作方式进行了结合,使得原本暴露在外的数据与实现的细节隐藏起来,只提供对外公开的接口供用户使用。这样做大大增强了代码的安全性,实现了对代码的管理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值