类的相关知识(一)

news/2024/11/29 1:54:39/

目录

OOP(面向对象编程)

区别

面向过程

面向对象

成员函数

类的作用域

类的大小

this指针

OOP(面向对象编程)

本质上是一种编程思想,通过把我们编程中遇到的事物抽象成对象来编程

区别

面向过程

struct hero { 英雄属性}
struct monster (怪物属性)
int act(hero &alex, monster& ghost)
{ghost.hp-=alex.act;return monster.hp;
}

这里通过act传入两个变量,通过计算,返回参数二的值,这是面向过程的,因为它主要聚焦于计算过程

面向对象

Alex.act(ghost)

 这才是面向对象,意思就是alex攻击ghost,act属于Alex的方法,主要侧重于两个对象

语法 

class 类名称
{private:私有int diamond;public:共有void init(){diamond=3;}
}

知识扩展*;类和结构体一样的,类就是结构体,唯一的区别:默认的访问权限不同,struct默认权限为公有(public),class默认权限为私有(private)

private:仅仅成员函数能够访问使用,其他都不能访问,自己也不能访问,这里将diamond初始化为3,其它地方都不能修改,很好的保护了diamond。

成员函数

类由属性和行为构成,属性就是成员变量,方法就是成员函数

类的作用域

类中的成员的作用域就是在这个类里面,如果想在外面访问类里面 的成员,就要通过类进行实例化,也就是声明一个变量,然后通过变量访问

class Role
{
public:int hp;void addhp(Role& r);void bigger(Role* r);
};
Role hero;    实例化一个变量
hero.hp=4;
class C
{};
void Role::addhp(Role& r)
{r.hp+=100
}

通过上面的知识,也可以把类的方法像上面这么写,加上作用域,在类中声明即可,为什么要声明呢?因为定义一个类,就像给了编译器一张图纸,要让编译器知道有这个函数。

类的大小

类的方法不占类的内存空间,它编译时放在了其他的内存地方。用sizeof求一下Role的大小

发现是4字节

空类的大小

上面的空类C大小为1字节,因为假设我们声明一个两个C的类变量,C1和C2,如果不给他们内存空间,就不能区分它们,所以编译器给它一个1字节的空间

this指针

Role* Role::bigger(Role* r)
{return r->hp > ho ? r:this;
}
Role Hero;
Hero.hp=100;
Role Monster;
Hero.ho=200;
Hero.bigger(&Monster)

谁的方法就指向谁,就是谁的this指针


http://www.ppmy.cn/news/41733.html

相关文章

SQL Day01

1.关系型数据库的特点 理论基础:关系代数(集合论、一阶逻辑、关系运算) 具体表象:用二维表装数据 ​ - 表 - table / entity - relation ​ - 列 - column / field - attribute ​ - 行 - row / record - tuple ​ - 列的数量 - …

不完整数据下视听情感识别的自注意融合

Self-attention fusion for audiovisual emotion recognition with incomplete data 译文:不完整数据下视听情感识别的自注意融合 摘要:在本文中,我们以视听情感识别为例,考虑了多模态数据分析的问题。我们提出了一种能够从原始…

Excel快捷键

ctrlQ 快速分析,对数据进行快速分析,如求和,图表、格式化数据等 ctrlT 转化为超级表,超级表的功能很多,很便捷 ctrlE 快速填充,能够根据规律自动填充对应的数据提出或拼接 ctrl;ctrlshift&#…

华硕ROG|玩家国度 冰刃7双屏 GX650PY Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原

华硕ROG|玩家国度 冰刃7双屏 GX650PY Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原 文件地址:https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd8888 华硕工厂恢复系统 ,安装结束后带隐藏分区以及机器所有驱动软件 需准备一个…

C中的预处理,宏

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C 🔥座右铭:“不要等到什么都没有了,才下…

【docx模块】python中可以处理word文档的模块

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 今天给大家带来docx模块得介绍以及使用~ 一.docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的。 也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看…

Elasticsearch新手向高手:GPT智能助手助你跃升技能巅峰

本文将从三个层次引导您如何利用GPT智能助手学习Elasticsearch,并提供详细的案例和经验分享。 一、初级程序员 学习基础知识:利用GPT了解Elasticsearch的核心概念,如倒排索引、分片、复制等,以及它如何实现高效搜索和存储。 案…

迅为龙芯2K0500全国产开发板

目录 龙芯2K0500处理器 动态电源管理 低功耗技术 产品开发更快捷 全国产设计方案 2K0500核心板 邮票孔连接 丰富接口 高扩展性 系统全开源 品质保障 行业应用 龙芯2K0500处理器 迅为iTOP-LS2K0500开发采用龙芯LS2K0500处理器,基于龙芯自主指令系统&#x…