C++类的定义和实例化对象和this指针

FOC:【1】浅析SVPWM算法(七段式)以及MATLAB仿真验证 最近的科研项目需要使用到SVPWM算法,网上相关的原理介绍很多。对于纯应用的需求来说,或许有些内容上的冗余。 本文的目的就是简要并且明确的给出具体的计算步骤,可以帮助快速上手。同时利用MATLAB进行了简单算法验证。..................... 阅读详情

类的定义

1.类的定义格式

一定要记住class这个关键字,它是定义类的关键字。

定义类的格式:class+类的名字+{内容}+;

一定要记住class定义完了后最后括号后面还有分号;

 类里面可以包括成员变量和成员函数,比如

 2.成员函数特性

定义在类里面的成员函数默认为inline,取决于编译器和你的成员函数的代码。意思就是说你在类里面放一个成员函数,看情况,有可能编译器会使你这个函数是一个内联函数,也有可能不会使你的函数成为一个内联函数,如果你的函数被认定为内联函数那么下次调用时就不开辟空间,直接在调用的地方直接展开,但是如果编译器不想将你的函数作为内联函数那么,这个成员函数就会作为一个普通函数,还是会开辟空间。

3.struct也可以定义类

struct也可以像class差不多定义类,格式我不多说了直接看代码。

 4.访问限定符

访问限定符有三种分别是,public,private,protected。protected和private是一样的,现在还先不说它们之间的差异,

作用域:每个限定访问符的作用域都是从自身开始到下一个限定访问符结束,或者到“}”结束

在private作用域中的成员只能在类中访问,在类外访问会报错。

在public作用域中的成员可以在类中访问也可以在类外访问。

class定义的类如果没有写访问限定符那么默认是在private中

struct定义的类如果没有写访问限定符那么默认是在public中

5.类域

类域的作用就是每个类的成员都被类给包了起来,如果想用这个类里的成员就需要指明类的名字。我们直接看代码

以上代码就是类域的表现,对象+.+成员函数

 如果我们不表明类域就会发生下面情况

编译会报错,因为不指明类域,编译器就会以为Add是全局函数,然后找不到它。

实例化对象

我们看上面的图来进行理解,如果类是一个图纸,那么用它造出来的东西就是对象

 你们看这个,MyClass是类,而MC,MB,MA,MD就是用这个类造出来的对象,这个过程就是类的实例化,类是一个模型,用这个模型生产出来的就是对象。

1.对象大小

如何计算对象的大小??

我们先要判断计算对象的大小,那么对象的大小包括什么,包括成员函数??包括成员变量??

如果包括成员函数,我们要分析的是函数被编译后是一段指令,对象中没法储存,这些指令存储在一个单独的区域,如果对象非要储存那么储存的就是它的成员函数的指针,如果存了函数指针,调用100次类那么指针就要被重复100次,这样就太消耗空间了,那么成员函数有存指针的必要吗,其实函数指针是没有必要存储的,函数指针是一个地址,编译器在链接的时候,就要找到函数的地址,不是在运行找,所以对象中没必要存函数地址。

当我计算对象大小时我们直接计算成员变量大小即可。

2.内存对齐规则

1.第一个成员与结构体偏移量为0的地址处

2.其它成员变量要对其到某个数字(对其数)的整数倍的地址处

3.注意:对其数=编译器默认的一个对其数与该成员大小的较小值

 4.VS中默认对其数是8

5.结构体总大小为:最大对其数(所有变量类型最大者与默认对齐参数取最小)的整数倍

6.如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对其数的整数倍初,结构体的整体大小就是所有最大对其数(含嵌套结构体的对齐数)的整数倍。

7.如果对象没有成员变量那么对象的大小就是1,因为如果一个字节都不给,那对象不就跟没存在过吗,所以至少给一个字节,纯粹是让对象占个位置,证明它存在过。

this指针

用下面代码理解this指针

我们想想,当我们用Init对变量初始化的时候,编译器是怎么知道我们初始化的对象是谁??

这时就需要了解this指针了,其实MD类Init的原型是

void Init(MyClass* const this,int a,int b,int c)

这个this指针指向的就是这个 MD,所以类成员函数访问成员变量本质都是通过this指针访问的,如Init函数给_a赋值时就是

this->_a=a

但是C++规定不能在实参和形参位置显示的写this指针(编译时编译器会处理),但是可以在函数体内显示使用this指针

使用Python实现深度学习模型:智能光污染监测与管理 本项目将通过以下几个步骤实现智能光污染监测:收集光污染图像数据数据预处理构建深度学习模型训练模型评估模型部署模型用于实时监测通过本文介绍的步骤,我们实现了一个使用Python和深度学习技术的智能光污染监测与管理系统。该系统能够自动识别光污染源,为相关管理部门提供科学依据,以便更好地规划和管理城市照明。同时,这一方法还可以扩展到其他环境监测领域,为环境保护贡献力量。 阅读详情

相关推荐

ROS2实战:打造智能巡检机器人的关键技术与实现

本文详细介绍了基于ROS2和Navigation2构建智能巡检机器人的完整实战流程。通过设计主从协作的事件驱动架构,实现了机器人在已知地图中的自动导航、定点语音播报和环境图像采集功能。文章涵盖了从环境搭建、仿真配置到核心控制节点、语音服务与图像记录模块的代码实现,为开发者打造实用的自动巡检机器人提供了清晰的技术指南。

weixin_29031057的博客 222

c++三种实例化对象方式

1.隐式创建 首先我们定义一个测试类 class Person { private: int age; string name; public: Person() { cout<<"this is construct~"; } Person(int age, string name) { this->age = age; this-

bitcarmanlee的博客 1万+

MAX30102传感器实战:从寄存器配置到Arduino心率血氧监测

本文详细介绍了MAX30102传感器在Arduino平台上的实战应用,从寄存器配置到心率血氧监测的全过程。通过清晰的代码示例和实用技巧,帮助开发者快速实现脉搏血氧仪功能,包括I2C通信、FIFO数据处理及算法实现,适用于健康监测和可穿戴设备开发。

weixin_29182481的博客 511

C++中类的实例化的方法

C++中类的实例化的方法 类的实例化按照在分配内存上面的不同大体分为在:栈中的分配内存和堆中的内存的分配,于是分为下面三种方式。 class CEmployee { private: int age; int id; public: CEmployee() { cout << "这是构造函数" << endl; } CEmployee(int id) { this->...

Lu_gl的博客 2万+

目标检测 RT-DETR(2023)详细解读

在使用了这个技巧后,显然训练过程中,类别的标签不再是此前的0和1离散值,而是0~1的连续值。关于 Query Selection(查询向量选择),大家应该并不陌生,这个方法可谓在DETR领域大杀四方,如DAB-DETR对查询向量进行重构理解,将其解释为Anchor,DN-DETR通过查询降噪来应对匈牙利匹配的二义性所导致的训练时间长的问题,DINO提出从Encoder中选择Top-k特征进行学习等一系列方法,这都无疑向我们证明,查询向量很重要,选择好的Query能够让我们事半功倍。在RT-DETR中,

qq_51352130的博客 5865

Matlab实战:从零搭建弹道导弹六自由度仿真模型(附完整代码)

本文详细介绍了如何使用Matlab从零搭建弹道导弹六自由度仿真模型,涵盖仿真环境配置、核心运动方程实现、气动力建模及仿真结果分析。通过完整代码示例,帮助读者掌握弹道导弹六自由度仿真的关键技术,适用于航空航天工程和复杂系统建模领域。

x8y9z0的博客 946

C++中有三种常见的实例化方法

C++中有三种常见的实例化方法:静态实例化、堆实例化、栈实例化

m0_62921166的博客 1980

Revit二次开发之双事件:空闲事件与DocumentChanged事件

对以下文章所展示的代码进行了修改,当前展示的代码可直接复制使用。 由于本人初学,下列语言为个人理解,如有错误请指正。   《引用1》中: 使用模态对话框,或者尽量保证事件在ExternalCommand的Execute函数或者ExternalApplication的OnStartup函数里面注册。 如果一定要使用非模态对话框,那么请使用ExternalEvent事件的Raise函数,强迫...

一个Revit二次开发的实习生 6147

c++:三种实例化对象方式

c++:三种实例化对象方式

hhd1988的专栏 1784

VS Code + EIDE + Clangd 构建 Keil/MDK 嵌入式开发新范式

嵌入式C/C++开发长期受限于传统IDE的语法理解弱、导航卡顿、跨工程复用难等问题。Clangd作为基于AST的现代语言服务器,结合EIDE对Keil uVision和ARM MDK工程文件(.uvprojx)的深度解析能力,可将编译配置、芯片型号、内存模型、扩展关键字等语义精准翻译为标准compile_commands.json,从而实现智能跳转、宏展开识别、结构体实时展开等高阶编辑体验。该方案不替换Keil/MDK编译与烧录流程,仅升级代码理解层,天然兼容STC8051、STM32 Cortex-M、G

weixin_34321753的博客 352

1.2 博图TIA的轨迹(Trace)功能介绍

在TIA中“轨迹” ( Traces ) 能来记录设备变量并对记录进行评估,对有些故障排查很有帮助,本文进行介绍

qq_34047402的博客 1646

Java基础:第二十七讲 类的定义

李绪成的一亩三分地 2794

ardupilot 日志分析《xKF1信息》

ardupilot 日志分析系列将会把ardupilot所有的日志文档进行分析,为我们分析无人机的运行状态,炸鸡原因,传感器状态,电机状态,控制信息,滤波信息做准备。本节主要分析xKF1日志信息,欢迎批评指正。学习好ardupilot必须会分析飞行日志,从飞行日志中我们可以学到很多无人机的知识。无人机是综合知识的体现,涵盖:导航、控制、滤波、算法、协议等各种知识,只有更全面的学习,才能在无人机的道路上越走越远。

陌城烟雨 1225

【C++详解】类和对象(上)类的定义、实例化、this指针

class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前面或者后面加_ 或者 m开头,小编一般会在成员变量前面加_。C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是struct中可以定义函数,⼀般情况下我们还是推荐⽤class定义类。

2501_90265152的博客 1387

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++类和对象:类的定义,类的实例化,this指针(很重要)

介绍:C++中类和对象:类的定义,类的实例化,this指针

2401_88433210的博客 1002

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【C++】类和对象<上>(类的定义,类域,实例化,this指针)

c++类和对象详解:类的定义,类域,实例化,this指针

2301_80038570的博客 1180

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【C++】类和对象(一)(定义、实例化、this指针)

学习随笔

lwg6666的博客 940

【C++初阶】--类和对象(上)(类定义,实例化,this指针)

1.类的定义与结构体的定义类似,结构体用关键字struct,类用关键字class,类名用户可以自定义,然后加{},{}中为类的主体,定义结束后,不要忘记‘;类体中的内容称为类的成员,类中的变量称为类的属性或成员变量,类中的函数称为类的方法或者成员函数。private://类的属性/成员函数int* arr;int top;public://初始化void inital(int n=4)//缺省参数");exit(-1);arr = temp;top = 0;//进栈。

yycwhks的博客 1073

【C++】类和对象(一)定义、访问限定符、实例化、对象大小、this指针

其中class为定义类的关键字,jyan为类的名字,{}中为类的主体。注意类定义结束时不能省略后面的分号。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加_或者 m开头,注意C++中这个并不是强制的,只是一些惯例,具体看公司的要求。C++中struct也可以定义类。

2302_79531041的博客 1123

【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)

关于类入门的基本内容到这里就结束了,本篇博客对面向对象编程做了基本的介绍,介绍了类的基本定义方式和使用方法,访问限定符以及面向对象三大特性之一的封装,探讨了类的底层存储方式,实例化方式,最后还讲到了特殊的this指针。C++中通过类可以将数据 以及 操作数据的方法进行完美结合,通过访问权限可以控制那些方法在类外可以被调用,即封装,在使用时就像使用自己的成员一样,更符合人类对一件事物的认知,大大方便了编程。

2303_79329831的博客 2492

【C++】类和对象(类的定义、访问、作用域、实例化、对象模型以及this指针)

C++中通过类可以将数据以及操作数据的方法进行完美结合,通过访问权限可以控制那些方法在类外可以被调用,即封装,在使用时就像使用自己的成员一样,更符合人类对一件事物的认知。C++中的参数是编译器维护的,C语言中需用用户自己维护。

谁在夜里看海.的博客 2010

【C++初阶】类和对象(一):定义、实例化与this指针

class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。top = 0;return;arr = ptr;free(arr);int top;st.Init();st.Push(1)

键盘敲碎了雾霭的博客 430

【浅尝C++】类和对象第一弹=>类的定义/访问限定符/实例化/类对象大小计算/this指针

C++中通常定义一个类,将这个对象包含的操作(函数)和变量一并存在一起。来看一下定义格式。↓↓↓//类体:由成员函数和成员变量组成//Attention:这里一定要有分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。定义类的两种方法Function1:声明和定义全部放在类体中。

Jammingpro 1049

C++_类和对象(上、中篇)——类的定义、实例化、this指针、C++和C语言实现Stack对比、类的默认成员函数、构造函数

C++_类和对象(上、中)——类的定义、实例化、this指针、C++和C语言实现Stack对比、类的默认成员函数、构造函数

祯的博客 933

C++初阶:类和对象(上)【类的定义】【实例化】【this指针】

(1)class为定义类的关键字,后面跟类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。(2)为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加_ 或者m开头,注意C++中这个并不是强制的,只是些惯例,具体看要求。(3)

2301_81699364的博客 743

C++类和对象(1) -- 类的定义,实例化,this指针

(1)class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。 (2)为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例。(3)C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是 struct中可以定义函数,⼀般情况下我们还

CSQCSQCC的博客 974
上一篇: C++nullptr
下一篇: C++构造函数和析构函数
Arcane Code
博客等级 码龄3年 598粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值