游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2802|回复: 10

请问这种奇特的构造函数使用方法大家觉的有什么好处吗?

[复制链接]

14

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2005-9-13 19:43:00 | 显示全部楼层 |阅读模式

最近看到好几个例子都是象下面那样使用构造函数,请问高手们这样使用构造函数有什么好处吗?为什么不正常的使用呢!

Class CAudioSegment{

        LPDIRECTMUSICSEGMENT8  dmSegment;
        LPDIRECTCSound3DBUFFER ds3DBuffer;
        bool                   is3DSound;
        vector3d                *vPosition;

       
===========奇特的构造函数=============
CAudioSegment() : dmSegment(NULL),  ds3DBuffer(NULL), is3DSound(false) , vPosition(NULL)
        {}
================================
};

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-9-13 19:56:00 | 显示全部楼层

Re:请问这种奇特的构造函数使用方法大家觉的有什么好处

。。。他是初始化成员的另一种形式,const类型就是要这样才能初始化的。

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-13 21:38:00 | 显示全部楼层

Re:请问这种奇特的构造函数使用方法大家觉的有什么好处

避免重复初始化

14

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
 楼主| 发表于 2005-9-14 10:23:00 | 显示全部楼层

Re:请问这种奇特的构造函数使用方法大家觉的有什么好处

可是这四个成员变量都不是const修饰的啊!而且如果用一般的构造函数形式,怎么会重复初始化呢?

42

主题

418

帖子

418

积分

中级会员

Rank: 3Rank: 3

积分
418
发表于 2005-9-14 10:49:00 | 显示全部楼层

Re:请问这种奇特的构造函数使用方法大家觉的有什么好处

第一,书写清晰,便于修改
第二,象 3 楼的大哥说的,变量与对象同时初始化,避免了重复初始化,提高了效率
更详细的说明可以看些 C++ 语言方面的书籍

6

主题

390

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
发表于 2005-9-14 12:56:00 | 显示全部楼层

Re:请问这种奇特的构造函数使用方法大家觉的有什么好处

这一点都不奇特。这才是初始化成员的王道

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2005-9-15 09:35:00 | 显示全部楼层

Re:请问这种奇特的构造函数使用方法大家觉的有什么好处

如果类成员都是基本数据类型区别是不大,如果有复杂的对象就有可能造成重复的初始化

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-9-15 09:51:00 | 显示全部楼层

Re:请问这种奇特的构造函数使用方法大家觉的有什么好处

class A
{
public:
    A(int a){}
};

class B : public A
{
public:
    B() : A(0) {}
};

你就只能这么构造了

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-17 10:54:00 | 显示全部楼层

Re:请问这种奇特的构造函数使用方法大家觉的有什么好处

。。。。。我怎么觉得一点都不奇怪。。。

3

主题

107

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2005-9-17 18:55:00 | 显示全部楼层

Re:请问这种奇特的构造函数使用方法大家觉的有什么好处

这样可以避免重复初始化,即可以避免创建临时对象。
王道,推荐~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 22:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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