这是构造函数的什么用法?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