📄 虚函数初探.txt
字号:
void Cluster::Mul_(const Cluster& b)
{ // Mul_ can't work!!!!
//Cluster b(o);
trace("Mul_ called\n");
const_ *= b.const_;
map<string,int>::const_iterator it; //frame
for (it = b.frame_map_.begin();it != b.frame_map_.end();++it)
{
if(frame_map_.find(it->first) != frame_map_.end())
// find this node
frame_map_[it->first] += it->second;
else
frame_map_.insert(*it);
}
UpdateAll();
}
void Cluster::Div_(const Cluster&)
{
}
void Cluster::Mul(const Operand& root)//基于可用接口做乘法,而不能基于
//自身结构做乘法!!!!
//或者基于人所共知的结构!!
//你也可以把基类改造到你需要的结构上!!!
{
trace("Mul called\n");
Cluster brother(root); //不会自动完成此虚函数
this->Mul_(brother);
}
void Cluster::Div(const Operand& root)
{
Cluster brother(root); //不会自动完成此虚函数
this->Div_(brother);
}
Cluster类Mul(虚函数)不直接接受自身类型时,一个自身类型被放到Mul函数中去的时候,
应该是先被切割为父类型,然后找到合适的函数,
像上面的这种情况切割先发生了,所以后来的再构造已经无法还原到自身!!!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -