C++57个入门知识点_15 类及类的访问权限(C++数据及数据操作方法放在一起组成结构体的思想即为封装;关键字:Class;面向对象语言的3个基本特点:封装、继承、多态;修改实参方法;类默认为私有)

接上篇:C++57个入门知识点_14 面向对象及类(伪代码讲通、面向对象: 生活中事物描述成对象,对象之间产生关系,从而组织成程序;对象=数据(数据类型)+行为(函数)、以函数为单位把代码组织起来的),本篇将会介绍在C++中如何处理和使用类。
对编程有基础认识的人都知道面向对象的语言有三个特点(1)封装;(2)继承;(3)多态。今天主要介绍面向对象的基本特点-封装。

总结放于前:

  • C++中对结构体(C中只有数据)进行了扩展,允许将函数放到结构中,其数据及数据操作的方法放在一起组成一个结构体(数据与行为统一在一起),这种思想就是封装
  • 使用引用传递和修改实参
Class WashMchine {

void wash(Cloth& cl) {printf("洗衣服 颜色=%d 大小=%d\r\n", cl.nColor, cl.nSize);}

 }    
 
void main { 

wm.wash(cl) 

}
  • 类的三种访问权限:public、protect、private,结构体默认是公有权限,类默认是私有权限

1. 类的封装特点

C++中对结构体(C中只有数据)进行了扩展,允许将函数放到结构中,其数据及数据操作的方法放在一起组成一个结构体(数据与行为统一在一起),这种思想就是封装

1.1 传入实参的方法

请注意: 下面wm.wash(cl);的写法只是将cl对象做为形参拷贝了一份,传入到函数内,相当于衣服的拷贝在洗,本身没有洗。

struct WashMchine {
	int nWidth;
	int nHeight;
	int nLength;
	int nType;//类型(滚筒,波轮)
	int nBland;//品牌
//传入的为形参
	void wash(Cloth cl) {
		printf("洗衣服 颜色=%d 大小=%d\r\n", cl.nColor, cl.nSize);
	}
};

int main(int argc, char* argv[])
{
	WashMchine wm;
	Cloth cl;

	wm.wash(cl);

	return 0;
}

我们需要传递指针或者引用去洗,这样洗的就是main中的对象,而不是拷贝,下面采用引用的方法实现修改实参。

#include <iostream>

//封装特点
//C++中对结构体(C中只有数据)进行了扩展,允许将函数放到结构中
//把数据及数据操作的方法放在一起组成一个结构体

struct Cloth {

	int nColor;
	int nSize;

};

struct WashMchine {
	int nWidth;
	int nHeight;
	int nLength;
	int nType;//类型(滚筒,波轮)
	int nBland;//品牌

	void wash(Cloth& cl) {
		printf("洗衣服 颜色=%d 大小=%d\r\n", cl.nColor, cl.nSize);
	}
};
};

//某一个函数不是孤立存在的,是依靠某一个对象存在的
int main(int argc, char* argv[])
{
	WashMchine wm;
	Cloth cl;

	wm.wash(cl);

	return 0;
}

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

1.2 C++类的关键字Class

C++中的struct关键字,是对C中的扩展,允许将函数写入其中,但C++创建了一个关键字Class,突出C++中的封装

C++类的书写代码规范:类名一般是使用C开头(微软风格)

将代码进行,得到如下:

#include <iostream>
struct Cloth {
	int nColor;
	int nSize;

};

class CWashMchine
{
	int nWidth;
	int nHeight;
	int nLength;
	int nType;//类型(滚筒,波轮)
	int nBland;//品牌

	void wash(Cloth& cl) {
		printf("洗衣服 颜色=%d 大小=%d\r\n", cl.nColor, cl.nSize);
	}

};

int main(int argc, char* argv[])
{
	//类名      对象名(类的实例化)
	CWashMchine wm;
	Cloth cl;

	wm.wash(cl);

	return 0;
}

运行结果:显示private成员无法访问
在这里插入图片描述
出现上面的结果的原因是:结构体和类唯一的区别即为访问权限的区别

2. 类的三种访问权限

访问权限:指当前类域(Class的{}里所有的代码范围)之外访问的规则(编译器做的限制)。

(1)public 公有(类域内外均可访问的权限);
(2)protect 保护(继承中使用);
(3)private 私有(类域中可以访问,类域外无法访问)

#include <iostream>

struct Cloth {
	int nColor;
	int nSize;
};

class CWashMchine
{
public:
	int nWidth;
	int nHeight;
	int nLength;
	int nType;//类型(滚筒,波轮)
	int nBland;//品牌

private:
	void wash(Cloth& cl) {
		printf("洗衣服 颜色=%d 大小=%d\r\n", cl.nColor, cl.nSize);
	}
};

int main(int argc, char* argv[])
{
	Cloth cl;
	CWashMchine wm;
	wm.wash(cl);//wash只能在类域内进行访问,类域外访问会报错

	return 0;
}

运行结果:main()中无法访问private中的函数
在这里插入图片描述

  • 类和结构体有默认的访问权限,结构体默认是公有权限,类默认是私有权限

3.学习视频地址:C++57个入门知识点_15 类及类的访问权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十月旧城

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

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

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

打赏作者

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

抵扣说明:

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

余额充值