IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++40个入门知识点_17 类的访问权限及C语言模拟类的封装 -> 正文阅读

[C++知识库]C++40个入门知识点_17 类的访问权限及C语言模拟类的封装

此处讲两个知识点:
1.类的访问权限
//类的访问权限检查时机
//在编译时期对访问权限进行限制,在程序运行时期可以进行修改
突破访问权限的方法:

//如何突破类的限制访问类的成员变量?常规语法不可以,可以通过指针的方式进行访问
//左侧含义,&clock取对象地址,(int*)&clock将地址强制准换为int指针,*(int*)&clock取指针下的内容
	*(int*)&clock = 111;

2.利用C语言模拟类的封装
个人总结:此处讲了C到C++的过程,其中的指针可以看做C++的this指针(理解可能不够深刻)
封装方法:

**//封装:**
//函数指针,相当于变量,需要赋值
typedef void((*PFN_SetHour)(int n));
//C语言模拟类的封装
struct taglock {

	int nHour;
	int nMinute;
	int n_Second;

	PFN_SetHour pfnSetHour;
};

void SetHour(struct taglock* c1,int n) {

	c1->nHour = n;

}

//调用函数
struct taglock c1;
	c1.pfnSetHour = SetHour;
	//类似于类中成员函数的调用
	c1.pfnSetHour(&c1,1);

3.学习地址:类的访问权限及C语言模拟类的封装
4.学习笔记:


#include <iostream>
#include "clock.h"

//面向对象:
//三个特点
//1.封装
//2.继承
//3.多态

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


struct Cloth{
	
	int nColor;
	int nSize;

};

//结构体:内部成员可以随便访问,默认公有
struct WashMchine {
private:
	int nWidth;
	int nHeight;
	int nLength;
	int nType;//类型(滚筒,波轮)
	int nBland;//品牌

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


//class--类:命名一般是在前加C,默认为私有权限
class CWashMchine {

//成员变量一般私有
private:	
	//数据成员/成员变量(member)命名规范前加m_
	int m_nWidth;
	int m_nHeight;
	int m_nLength;
	int m_nType;//类型(滚筒,波轮)
	int m_nBland;//品牌
//成员函数一般公有
public:
	//成员函数
	void wash(Cloth& cl) {
		printf("洗衣服 颜色=%d 大小=%d\r\n", cl.nColor, cl.nSize);
	}

};

//访问权限(指在当前类域之外访问的规则)
//1.public 公有(类域内外均可访问的权限)
//2.protect 保护(继承中使用)
//3.private 私有(类域中可以访问,类域外无法访问)

//结构体 默认的访问权限是public
//类     默认访问权限是private

//函数指针,相当于变量,需要赋值
typedef void((*PFN_SetHour)(int n));
//C语言模拟类的封装
struct taglock {

	int nHour;
	int nMinute;
	int n_Second;

	PFN_SetHour pfnSetHour;
};

void SetHour(struct taglock* c1,int n) {

	c1->nHour = n;

}

//类的访问权限检查时机
//在编译时期对访问权限进行限制,在程序运行时期可以进行修改

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

	wm.wash(cl);

	CClock clock;
	//clock.m_nHour = 1;

	struct taglock c1;
	c1.pfnSetHour = SetHour;
	//类似于类中成员函数的调用
	c1.pfnSetHour(&c1,1);
	
	//如何突破类的限制访问类的成员变量?常规语法不可以,可以通过指针的方式进行访问
	//左侧含义,&clock取对象地址,(int*)&clock将地址强制准换为int指针,*(int*)&clock取指针下的内容
	*(int*)&clock = 111;

	clock.SetHour(25);

	return 0;
}


  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 12:49:03  更:2021-10-29 12:50:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:56:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码