游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3280|回复: 14

这个用法是什么意思?郁闷

[复制链接]

12

主题

24

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2005-4-16 19:08:00 | 显示全部楼层 |阅读模式
    CAllocateHierarchy(CMyD3DApplication *pApp) :m_pApp(pApp) {}

冒号是什么意思?
整个又改怎么解释?

12

主题

24

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2005-4-16 19:22:00 | 显示全部楼层

Re:这个用法是什么意思?郁闷

有啊。在:m_pApp(pApp).....

15

主题

248

帖子

248

积分

中级会员

Rank: 3Rank: 3

积分
248
发表于 2005-4-16 20:01:00 | 显示全部楼层

Re:这个用法是什么意思?郁闷

是继承吧……?
前面类定义的第一句话应该是
      Class *** : public *** {}
这样的代码吧
如果是, 就说明 该(派生)类的成员函数
      CAllocateHierarchy()
需要 调用其基类的成员函数
      m_pApp()
来初始化该对象的基类部分
我觉得应该是这样, 不过也可能不是……

12

主题

24

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2005-4-16 20:24:00 | 显示全部楼层

Re:这个用法是什么意思?郁闷

但是m_pApp是另外一个类的对象指针啊。
所以,我就搞不懂了
它不是函数,怎么m_pApp()调用啊?

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-4-16 20:34:00 | 显示全部楼层

Re:这个用法是什么意思?郁闷


原来大家的语言基础很差嘛。
建议还是多看点基础的书籍,游戏是应用,是建立在一定基础上的作业。

在构造函数后加冒号分隔,是初始化成员和基类。
至于为什么一定要用这种格式,而不在函数体内,我就不太清楚了。
估计其意思是,在没有初始化对象的时候,初始化对象所依赖的部件。

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-4-16 20:42:00 | 显示全部楼层

Re:这个用法是什么意思?郁闷

如果是两个就不对了。
两个是作用域,


classA::play(); //这个play()是classA内部的。
classB::play(); //这个play()是classB内部的。

读书有益阿。



248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-4-16 21:04:00 | 显示全部楼层

Re:这个用法是什么意思?郁闷

为了不让你越来越迷糊,我还是建议你翻查资料。
就看看:和::的分别。
难道是有些学校的教科书上没有讲到这个知识点?
~~~
所以说,学校的教科书是不够看的,要博览群书,尤其是那些经典。

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-4-16 21:20:00 | 显示全部楼层

Re:这个用法是什么意思?郁闷


class b : public a ///这里有个冒号,是继承
{
public:

int he;
play(int n) : he(n) ;  //这里也有,是初始化

};

class::play(int n)  //这里有两个冒号,是限定
:he(n)
{}

所用的地方不同,没看出么?那个冒号是在函数的后面,he是成员,he(n)是he = n的意思。
差不多可以转化成这种形式:
class::play(int n)
{
he = n;
}
  不过用冒号分隔的形式,he在还没有进入函数体就已经初始化了,这在某些情况是需要的。
具体我也举不出例子。



12

主题

24

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2005-4-16 21:22:00 | 显示全部楼层

Re:这个用法是什么意思?郁闷

如果说:是初始化成员和基类。
那么m_pApp(pApp)是怎么初始化的呢?m_pApp是对象指针啊,有这种用法吗?

    CAllocateHierarchy(CMyD3DApplication *pApp) :m_pApp(pApp) {}

public:
    CMyD3DApplication* m_pApp;

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-4-16 21:26:00 | 显示全部楼层

Re:这个用法是什么意思?郁闷

正是这种用法阿。

m_pApp(pApp) 等于 m_pApp = pApp,这有什么问题?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 08:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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