虚函数初探.txt

来自「支持简单的公式推导」· 文本 代码 · 共 45 行

TXT
45
字号
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 + =
减小字号Ctrl + -
显示快捷键?