问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

对象引用

发布网友 发布时间:2022-04-24 08:10

我来回答

3个回答

懂视网 时间:2022-04-24 12:31

引用类型:

引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象。

JavaScript 内置的对象——String、Array、Number、Object都是引用类型,我们这些用户创建的对象实际上是这些类型的实例在JavaScript面向对象的编程过程中引用类型是为了支持‘类’所对应的逻辑出现的。

引用类型由三部分组成:构造函数、方法定义和属性。

以面向对象的方法编写的商店结算收银的POS机系统为例,我们来理解一下引用类型的“三步走”:

第一步,定义引用类型;

即创建构造函数,如下:

Js代码

function Cart(inputs){

this.inputs=inputs;

this.item_info=loadAllItems();

}/*inputs为客户购买商品传入POS机系统的商品信息,loadAllItems()是调用本地商品库中所有商品的

信息(仅用作说明问题不必深究)*/

这里用到了this关键字,在构造函数或方法内,this关键字表示引用类型的当前对象实例,

Java代码

this.inputs=inputs;

这行代码引用了当前对象实例的inputs属性,将之设置为参数inputs(为客户购买商品传入POS机系统的商品信息的条形码barcode)。

第二步,创建属性方法;

Js代码

Cart.prototype.get_item_base_info=function(normal_barcode){

return _.filter(this.item_info,function(item){

return normal_barcode.indexOf(item.barcode)>=0;

})

}//获取条形码对应的商品的信息

Cart.prototype.add_item_count=function(normal_barcode,item_base_info) {

var counts = _.values(_.countBy(normal_barcode));

_.each(item_base_info,function(item){

item.count=counts[_.indexOf(item_base_info,item)];

})

return item_base_info

}//去除相同条形码并记录商品数量

第三步,创建引用类型的实例;

Js代码

var cart=new Cart(inputs);//创建实例cart

在这里要注意,使用new关键字,不使用new关键字所写代码将无法正常工作,而且在实例化之前构造函数及其原型的属性中的方法都不会执行。实例化之后就可以调用构造函数中的原型的方法和输入的数据了。

Js代码

var item_base_info=cart.get_item_base_info(normal_barcodes);/*调用实例的获取条形码对应商品信息

的方法;normal_barcode为经过处理的可以被系统识别的输入的条形码(即顾客购买的商品的可识别条

形码);*/

var item_count_add=cart.add_item_count(normal_barcodes,item_base_info);/*调用实例的去除相同条

形码并记录商品数量的方法;*/

var shopping_list=print_shoppinglist(item_count_add);/*print_shoppinglist为商品单价乘数量所的商

品金额的方法;*/

console.log(shopping_list)//输出并打印结果

热心网友 时间:2022-04-24 09:39

运算符重载函数中的形参都应该是引用,这是规定.
至于函数类型其实就是返回值类型,具体是饮用还是数值要看具体情况:总的来说要保证你重载的运算符和已经存在的运算符在使用语境上没有区别 举两个例子
一般返回值还要继续被处理的情况 返回引用 比如+=运算符可以这样用
a += b += c;
那么+=就应该返回自身的引用 通常是 return *this;
返回值用过就丢弃的应该返回 值类型 比如+运算一般这样用
a = (b + c) * d;
这里b+c的值在运算之后就丢弃了 所以返回值类型 通常是return ClassA(result_of_operation);

运算符重载是个比较麻烦的东西 但是Effective C++里面讲的很清楚 你应该仔细看看那本书

热心网友 时间:2022-04-24 10:57

不要急先,应该还是刚开始学C++吧
C++东西确实蛮多的,要一个一个地学
Effective C++是必须要看的,但现在重要的是读完一本普通C++教材
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 安哥拉树皮女性怎么用 卡宾达树皮女人喝了会有什么反应,有哪些好处 女人喝卡宾达树皮后有什么好处吗 鬼会附到人身上,然后操控人吗? 鬼会吃人吗 鬼是什么东西,会吃人么? 物权法:船舶、航空器和机动车等物权的设立、变更、转让和消灭,未经登记,不得对抗善意第三人什么意思? 你们见过鬼吗?鬼会伤害好人吗?真的有鬼吗?我很怕..... 动产抵押登记对抗善意第三人是指什么 什么鬼可以帮人实现愿望? 听说有鬼魂,鬼魂也有感情,那鬼魂会保护自己的主人吗吗 鬼会保护人吗 读在职研究生??? 鬼真的能实现人的愿望么 关于读在职研究生的问题 鬼真的存在吗?哪有好鬼吗?,好鬼会帮人吗? 读在职研究生的要求? 2014年本来毕业的,可以报在职研究生吗? 谁见过鬼?鬼会帮人的忙不?谁帮我解答一下,谢谢。 不得对抗善意第三人是何意思 女孩取名,五形喜土,配木。帮我取个好听且含义好的,在下姓:石。 奥迪q5怎么连接手机蓝牙耳机 急!!急!!有谁会写关于申请奖学金的申请书? 中学生的奖学金申请书怎么写? 中学生奖学金申请书怎么写? 中学生奖学金申请书怎么 QQ号码多长时间不用会过期? 4分等于多少毫米 父母有房要过给孩子,小孩需要办理社保吗? 准备要小孩 要购买社保吗? 中信银行信用卡只能还钱不让刷卡了还需要还钱吗 立刷是不是不能刷中信信用卡? 谁能帮我讲一下 Java中的引用类型和引用变量 IAM破壁机I5错误提示EO1怎么办?? imlimiteo这是什么单词?汉语怎么读? when the nights falls. iam along是哪首英文歌里的 iamtnebest歌词 上海郊外踏青提供几个好地方 求Aimer的《RE:IAM》中文翻译和罗马音歌词谢谢了,大神帮忙啊 Im still loving you(韩文版甜蜜蜜)(求高手帮翻译成拉丁文 和中文音释)