关键词:
【中文标题】初始化类的两种方法?【英文标题】:Two ways of initializing a class? 【发布时间】:2020-05-28 15:39:20 【问题描述】:我有一些关于类的概念问题,我想确保我以正确的方式做事。
我正在使用 Arduino 编程并为我的项目使用一些库。 库实现了一个我可以在我的项目中实例化的类。
例如,AdafruitMotorShieldV2 库实现了 Adafruit_MotorShield 类,并在示例中将该类实例化为一个名为 AFMS 的变量。到目前为止一切都清楚了
#include <Adafruit_MotorShield.h>
// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
但是我想出了其他库,例如 DeadReckoner,在示例中,该类被实例化为:
#include <DeadReckoner.h>
DeadReckoner deadReckoner(&leftTicks, &rightTicks, TICKS_PER_REV, RADIUS, LENGTH);
这里我不确定发生了什么。
DeadReckoner(大写字母)是类的名称,当然也是构造器的名称。我假设 deadReckoner(下划线)是实例化 DeadReckoner 的变量,但为什么调用与 Adafruit 库中的不同?
换句话说:这两个调用是否等效?
DeadReckoner deadReckoner(&leftTicks, &rightTicks, TICKS_PER_REV, RADIUS, LENGTH);
DeadReckoner deadReckoner = DeadReckoner(&leftTicks, &rightTicks, TICKS_PER_REV, RADIUS, LENGTH);
如果需要,这是 DeadReckoner.h 中的相关代码
class DeadReckoner
public:
DeadReckoner(volatile unsigned long *, volatile unsigned long *, unsigned long, unsigned long, int, double, double);
// other methods of the class
【问题讨论】:
【参考方案1】:首先您应该将标签从 C 更改为 C++
第一个是 DeadReckoner 承包商,它接收一些参考作为参数。
第二个是 DeadReckoner 分配算子,接收 DeadReckoner 承包商的结果。 查看 h 文件,您会发现与此类似的签名: DeadReckoner & DeadReckoner :: operator= ( const DeadReckoner & )
这两行的结果是一样的,但是第一行是一个 DeadReckoner 对象。 而第二个创建一个 DeadReckoner 对象,使用赋值运算符将其复制到另一个 DeadReckoner 对象。
【讨论】:
Copy initializationjava中类加载的两种方法是啥?
...)、实例对象.class(属性)、实例对象getClass()。在连接和初始化阶段,其实静态变量经过了两次赋值:第一次是静态变量类型的默认值;第二次是我们真正赋给静态变量的值。Java对类的使用分为两种方式:主动使用和被动使用。... 查看详情
初始化arraylist的两种方法
方式一: ArrayList<String>list=newArrayList<String>();Stringstr01=String("str01");Stringstr02=String("str02");list.add(str01);list.add(str02);方式二:ArrayList<String>list=newArra 查看详情
初始化arraylist的两种方法[转]
方式一: ArrayList<String>list=newArrayList<String>(); Stringstr01=String("str01"); Stringstr02=String("str02"); list.add(str01); list.add(str02);方式二: Array 查看详情
ExtJS 3:创建自定义类的两种方式:有啥区别?
】ExtJS3:创建自定义类的两种方式:有啥区别?【英文标题】:ExtJS3:Twowaysofcreatingcustomclass:what\'sthedifference?ExtJS3:创建自定义类的两种方式:有什么区别?【发布时间】:2010-11-0720:11:13【问题描述】:我正在尝试学习ExtJS和一般... 查看详情
idea查看继承关系或其图表的两种方法
...一个类,然后按Ctrl+H,可以快速查看当前所选类的继承关系,如下图:第一种方法:能帮我们进行筛选,如上图所示一排按钮,从左往右分别是看当前类的父类和子类、查看当前类的父类、查看当前... 查看详情
创建线程的两种方法
创建线程的两种方法: 1、继承Thread类,并重写Thread类的run方法 2、实现接口Runnable的run方法。 注意:另外还有一种创建线程的方法笔者没有指出,使用线程池方式—Callable接口。Callable接口实现类,call方法可抛出异常、... 查看详情
无头链表的两种实现方法(代码片段)
...新的节点。1.1创建结构体structNode intData; structNode*next;;1.2初始化新的节点structNode*CreateNode(intdata) structNode*NewNode=(structNode*)malloc(s 查看详情
使用idea当中的快捷键快速查看继承关系或其图表的两种方法
...dea当中选中一个类,然后按Ctrl+H,可以快速查看当前所选类的继承关系,如下图:?同样选中一个类,按CTRL+ALT+U,即可生成当前类的继承关系图,如下图:?二、二者的区别上述两种方法都能帮我们快速查看类之间的层次关系。?... 查看详情
java创建线程的两种方法
...态(Runnable)1.通过扩展Thread类来创建线程(1)定义Thread类的子类,并重写该类 查看详情
java中多线程的两种创建方式(代码片段)
...Thread类第二步:重写run()方法第三步:创建继承了Thread类的对象,调用start()方法启动。//线程创建方式一:/*第一步:继承Thread类第二步:重写run()方法第三步:创建继承了Thread类的对象,调用start()方法启动。*/publiccl... 查看详情
1-多线程的两种实现方式(代码片段)
...cvoidmain(String[]args)//方式一/*MyThreadmt=newMyThread();//创建Thread类的子类对象mt.start();//5.开启线程*///方法二myRunnablemr=newmyRunnable();//4.创建Runnable子类对象//Runnable对象没有start方法,所以将Runnable对象当做参数,通过Thread类的构造方法Thre... 查看详情
创建类的两种方式
1、直接创建fromdjango.formsimportModelFormclassTestModelForm(ModelForm):classMeta:model=self.model_class#表所对应的类fields="__all__" 2、通过“type”创建fromdjango.formsimportModelFormmeta=type(‘Meta‘,(object,),{‘mode 查看详情
类的两种定义
#classFoo(object):#def__init__(self,name):#self.name=name###f=Foo("alex")#print(type(f))#print(type(Foo))deffunc(self):print(‘hello%s‘%self.name)def__init__(self,name,age):self.name=nameself.age=ageFo 查看详情
uiimage加载本地图片的两种方式
UIImage加载图片方式一般有两种:(1)imagedNamed初始化:默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片对象,则从指定地方加载图片然后缓存... 查看详情
html基于类的视图中的两种形式(代码片段)
属性的两种定义方式
装饰器方式:在类的普通方法上应用@property装饰器经典类,具有一种@property装饰器(如上一步实例)################定义###############classGoods:@propertydefprice(self):return"wupeiqi"################调用###############obj=Goods()result=obj.price# 查看详情
安卓批量上传图片到七牛的两种方法
...key的时候遇到过这个问题。创建一个工具类QiNiuUploadUtil,初始化七牛的上传工具类UploadManager然后创建回调接口QiNiuUploadCompletionHandler因为本项目图片多选都用PictureSelector选择器所提上传图片数组类型为LocalMedia,这个根据自己项目... 查看详情
javascript创建类的两种常用方式
构造函数方式:a.代码:varmyClass=function(name){this.name=name}myClass.prototype.sex="male"varmyClass=newmyClass(‘lee‘)myClass.sex="female"console.log(myClass.name)console.log(myClass.sex)b.输出:leefemale工厂函数方式(推 查看详情