首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

C++中的类模板 *data问题。。

发布网友 发布时间:2022-04-25 13:14

我来回答

4个回答

热心网友 时间:2024-02-03 14:27

首先这个不叫类模板,而应该叫函数模板,专门用来生产函数。
*data不是指针,而data才是指针,*data是表示data指针所指向的值
T *data表示一个形式参数,然后就可以在函数体内使用data这个指针变量了,这里扮演的角色就是类型为T的一个数组的首地址

显然这是一个求和的函数,
s就是总和,
while(*data) s+=*data++;
由于后缀自加运算优先级高于*(指针),所以就相当于:
while(*data!=0)s=s+*(data++);
也就是说,初始s=0,然后每次将data所指向的T类型值加到s,并且将data这个指针指向下一个地址,直到data所指向的T类型值为0,循环结束追问哦,谢谢,那这个while(*data)里面的*data都是*data!=0的意思吗?还是只是在这里是这样?

追答嗯,while条件判断,0就是false,非0就是true
while在true的条件下才执行循环,也就是*data要非0,*data!=0

热心网友 时间:2024-02-03 14:27

*data 是指针,指向存储data的地址。data的类型是T,具体跟你实例化这个模板时选择的类型有关
s的类型也是T

就你这个调用来看,T的类型是int
int x[]={2,4,6,8,0,12,14,16,18};定义了一个int型数组,x是数组首个元素的地址,在调用total时便将T实例化为int了

热心网友 时间:2024-02-03 14:27

data其实就是T类型的指针变量,*data就是date指针指向的对象,T *data这里是在定义一个T类型的形参指针变量data,是代表T s=0;这里定义的s变量

热心网友 时间:2024-02-03 14:28

不好意思 我也不懂

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com