游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4212|回复: 8

为什么D3DX的函数参数都用指针而不用引用?

[复制链接]

6

主题

72

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2010-10-20 21:55:00 | 显示全部楼层 |阅读模式
RT,除了D3DXVECTOR3,D3DXMATRIX那些类的重载操作符的成员函数用了引用之外,好像其他大部分的参数用的都是指针。
想了很久都不明白。难道指针有先天的优势?

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2010-10-21 00:02:00 | 显示全部楼层

Re:为什么D3DX的函数参数都用指针而不用引用?

用指针作为返回值,可以处理NULL的情况。然后参数和返回值都采用统一的类型,这个函数就可以直接作为其他函数的参数来嵌套使用。

不过本质来说,就是一个代码规范,看个人喜好了。

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-1-5 16:47:00 | 显示全部楼层

Re:为什么D3DX的函数参数都用指针而不用引用?


void fun1( int& t )
{
  t = 0;
}
void fun2( int t )
{
  //其他操作
}
void fun3( int* p)
{
  *p = 0;
}

void main()
{
    int a;
    fun1(a);
    fun2(a);
    //如果不注意函数的参数,你就不能区别fun1和fun2有什么区别了
    //如果是传指针的话,即时你不看函数参数你就知道,有可能a的值会被改变
    fun3(&a);
}

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2012-1-11 09:30:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2012-8-27 18:41:00 | 显示全部楼层

Re:为什么D3DX的函数参数都用指针而不用引用?

我觉得可以直接传NULL
若用引用的话,还必须弄个变量

33

主题

159

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
发表于 2012-8-27 21:15:00 | 显示全部楼层

Re:为什么D3DX的函数参数都用指针而不用引用?

dircet是com组件(虽然包装的比较好让你不怎么看的出来是COM的)
com是一个服务协定
也就是说你初始一个d3dxdevice事实上并不在你应用程序里,而是在COM服务里
而一些简单地matrix vector vertex因为小,所以并不由class factory来生成,也就是说是在你应用程序里的

顺便说句,你要是到时候学了OPENGL还要崩溃,由于openGL是状态机,初始一个texture什么的,返回值都是int ,刚学,我已经感觉受不了了

23

主题

515

帖子

552

积分

高级会员

Rank: 4

积分
552
发表于 2012-9-3 13:44:00 | 显示全部楼层

Re:为什么D3DX的函数参数都用指针而不用引用?

你要明白一个问题(当然是几个问题):
D3D是D3D
COM是COM
C++是C++

所以,答案就是:D3D不是C++的D3D

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
发表于 2012-9-4 00:17:00 | 显示全部楼层

Re: 为什么D3DX的函数参数都用指针而不用引用?

真巧,我前些天也问了这个问题,而且也是举的d3d向量的例子

我的感觉是这样的:
1:引用是C++新特性,C语言没有这东西,所以指针更原生,更标准,更"过程化"
2:指针方便转换类型,比如可以很轻松的将UINT类型的color转换为以结构体形式存储的color,向量也一样

0

主题

4

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2012-9-5 17:01:00 | 显示全部楼层

Re:为什么D3DX的函数参数都用指针而不用引用?

个人觉得答案和七楼说的差不多。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-27 20:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表