首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这是构造函数的什么用法?解决思路

2013-01-11 
这是构造函数的什么用法?AdFront2 :: AdFront2 (const Box3d & aboundingbox): boundingbox(aboundingbox)

这是构造函数的什么用法?


AdFront2 :: AdFront2 (const Box3d & aboundingbox)
    : boundingbox(aboundingbox), 
      linesearchtree(boundingbox.PMin(), boundingbox.PMax()),
      pointsearchtree(boundingbox.PMin(), boundingbox.PMax()),
      cpointsearchtree(boundingbox.PMin(), boundingbox.PMax())
  {
    nfl = 0;
    allflines = 0;

    minval = 0;
    starti = lines.Begin();
  }

如上面所示的代码段,是AdFront2的构造函数的定义,此构造函数的声明为

AdFront2 (const Box3d & aboundingbox);

这里构造函数的形参只有一个,在定义时为什么冒号后面跟了那么多?AdFront2这个类是一个独立的类,跟其他类没有任何继承和派生关系。那为什么后面会跟这么多呢?请大家指点一下,谢谢。
[解决办法]
成员变量的初始化列表
[解决办法]
2楼  正解
[解决办法]
构造函数后面的冒号开始肯定是成员变量初始化列表
[解决办法]
引用:
引用:构造函数后面的冒号开始肯定是成员变量初始化列表
上面三位都说是成员变量的初始化列表,但构造函数的形参只有一个啊!初始化列表中怎么会有四部分,麻烦您指点一下。

在冒号和花括号之间的代码称为构造函数的初始化列表。构造函数的初始化列表
为 类 的一个或多个数据成员指定初值。//楼主该买本书去看下。。。。
[解决办法]
嗯,用用就知道了,可以给成员变量赋某常量值,不一定是形参的值。。。。
[解决办法]
冒号后是给成员初始化。

成员初始化的格式如  a(a初始化值), b(b初始化值)……

如果a、b是类对象,那么是把对应初始化值传给这个类的构造函数的。

花三天先系统看本书吧。
[解决办法]

AdFront2 :: AdFront2 (const Box3d & aboundingbox)
    : boundingbox(aboundingbox), 
      linesearchtree(boundingbox.PMin(), boundingbox.PMax()),
      pointsearchtree(boundingbox.PMin(), boundingbox.PMax()),
      cpointsearchtree(boundingbox.PMin(), boundingbox.PMax())

/*
boundingbox
linesearchtree
pointsearchtree
cpointsearchtree
這些都是AdFront2的成員變量,
對應括號中的是構造這些成員變量所需要的參數,

boundingbox(aboundingbox),
aboundingbox 是構造AdFront2傳進來的參數.

linesearchtree
pointsearchtree
cpointsearchtree
這幾個用到已經構造好的boundingbox
*/
  {
    nfl = 0;
    allflines = 0;

    minval = 0;
    starti = lines.Begin();
  }

[解决办法]
google 初始化列表
[解决办法]
lz要加油啊~~~~
[解决办法]
引用:
引用:构造函数后面的冒号开始肯定是成员变量初始化列表
上面三位都说是成员变量的初始化列表,但构造函数的形参只有一个啊!初始化列表中怎么会有四部分,麻烦您指点一下。


我不知道你这个类中linesearchtree,
      pointsearchtree,
      cpointsearchtree
是怎么定义的,很明显一个形参是另一个类的对象,然后用这个对象来初始化其他的成员变量。不知道你这个类中有几个成员变量?


[解决办法]
ctor-initializer

热点排行