作者scxz (tears and rain)
看板EE_DSnP
标题[问题] 关於_one与_zero
时间Thu Jan 4 23:54:55 2007
抱歉打扰了
我有的问题是
在BddManager的constructor中
会call到init()然後会跑过这两行
BddNode::_one = BddNode(BddNodeInt::_terminal, BDD_POS_EDGE);
BddNode::_zero = BddNode(BddNodeInt::_terminal, BDD_NEG_EDGE);
但_one一开始_nodeV是空的
所以=的overload中相对应的BddNodeInt的_refcount是不是就不用--了呢?
此外在test.cpp中
我想办法cout了_one与_zero这两个static的data member
结果为
zero:
[0]
(+) 0x9d13cc0
==> Total #BddNodes : 1
one:
[0]
(+) 0x9d13cc0
==> Total #BddNodes : 1
可是
BddNode的constructor不是
BddNode::BddNode(BddNodeInt* n, BDD_EDGE_FLAG f)
{
assert(n != 0);
_nodeV = size_t(n) + f;
n->incRefCount();
}
且BddNode::print是
BddNode::print(ostream& os, size_t indent, size_t& nNodes) const
{
for (size_t i = 0; i < indent; ++i)
os << ' ';
BddNodeInt* n = getBddNodeInt();
os << '[' << getLevel() << "](" << (isNegEdge()? '-' : '+') << ") ";
...
可是cout的结果_zero与_one的Edge都是(+)
不是应该是一个(+)一个(-)才对吗
观念不知道没有想错otz
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.241.149
※ 编辑: scxz 来自: 140.112.241.149 (01/04 23:57)